2013-02-16 15 views
16

Ho un insieme di eventi salvati nel mio database (un database molto speciale, quindi non posso usare alcuni noti server open source con, per esempio, MySQL). Ora voglio creare un server CalDav (da Java) in modo che un utente possa connettersi al suo client di calendario per recuperare o modificare eventi. Sono nuovo di così, ho un sacco di domande, spero che mi aiutiate.Sviluppo di un server CalDav

  1. Quali sono i passaggi generali?

  2. Devo offrire un servlet? Se sì, allora cosa devo restituire per una richiesta? un file JSON o XML o .ics?

  3. Quando un utente si iscrive al mio calendario, vuol dire che il suo cliente estrarrà il mio server (chiama il servlet) dopo un intervallo.

Aggiornamento: questo è di 1 anno vecchia questione da quando ho chiesto ma ho avuto abbastanza alcuni upvotes, quindi sono obbligato a fornire alcune informazioni: Ho finito per usare Milton biblioteca http://milton.io/, si astrae i servlet, devi solo scrivere le funzioni per restituire i dati. L'autore della biblioteca è abbastanza utile e informativo. Il risultato finale: il nostro server caldav ha funzionato.

Accetto anche la risposta di Evert.

+0

Ciao - stai ancora usando milton.io? Com'è andata? – avijendr

risposta

4

Leggi l'RFC: http://tools.ietf.org/html/rfc4791

non solo una volta, si vuole almeno leggerlo superiore a 4 tempi di fondo.

Inoltre, è consigliabile leggere anche le RFC per WebDAV, WebDAV ACL e iCalendar.

Ogni risposta che otterresti sarebbe una ripetizione di ciò che è lì dentro, e il tentativo di semplificarlo è piuttosto futile, perché hai davvero bisogno di una piena comprensione della maggior parte delle specifiche.

per rispondere alle vostre domande in particolare:

  1. è del tutto troppo vago per rispondere. I passaggi generali comportano la comprensione delle specifiche e la scrittura del server. I dettagli sono incoraggiati.
  2. È necessario qualcosa che possa rispondere alle richieste HTTP. Se quello è un servlet o qualcos'altro è meno importante. CalDAV è un'estensione a HTTP. I report XML vengono restituiti per le meta-informazioni e iCalendar è il formato predefinito per i dati del calendario effettivi. Per molte richieste http iCalendar è racchiuso in corpi xml. In questi giorni anche i server stanno iniziando a supportare xCal e jCal. Gli ultimi due sono opzionali, è necessario avere supporto iCalendar.
  3. In genere eseguono il polling a un intervallo definito dal client. Esistono meccanismi pub-sub, ma al momento non esiste uno standard per loro, e ci sono varie implementazioni là fuori. Le discussioni hanno iniziato a fornire un trasporto standard per questo, ma questo potrebbe richiedere del tempo per essere completato. (anni)
+3

Ci sono 3 punti in queste domande. La tua "risposta" non fornisce risposta a nessuno di loro. – bjedrzejewski

+1

La mia risposta fornisce un riferimento alla documentazione ufficiale che fornisce tutte le risposte. Avendo implementato un famoso server CalDAV, non è assolutamente possibile iniziare senza leggere il documento. – Evert

+1

Sono d'accordo con te, ma non sono d'accordo sul fatto che questo post risponda ai 3 punti richiesti, a cui probabilmente si potrebbe rispondere senza leggere l'intera documentazione. Questa è più una meta discussione sul formato di SO della verità in quello che hai appena detto. – bjedrzejewski

5

Vi faccio un tentativo ;-)

Quali sono i punti generali?

Come menzionato da Evert è necessario implementare un server CalDAV.A seconda delle funzionalità che si desidera supportare, ciò non è banale e richiede la comprensione delle specifiche pertinenti (iCalendar RFC 5545 e CalDAV 4791, WebDAV RFC 4918).

Quali sono i passaggi generali per implementare un server CalDAV? È necessario HTTP punti di entrata per:

a) servire i dati dell'account (chiamato presidi in WebDAV), questo include in base al quale URL i calendari di un conto dal vivo

b) servire l'elenco dei calendari (chiamato calendario a casa, le informazioni principali da a) indicano questo)

c) servire i calendari effettivi, cioè gli eventi contenuti all'interno di questi. I calendari CalDAV sono raccolte WebDAV speciali di risorse 'iCalendar'. iCalendar è il formato in cui sono rappresentati gli eventi.

A seconda delle funzionalità di CalDAV che si desidera supportare, può essere molto più complessa (ad esempio la pianificazione lato server). Esistono ottimizzazioni per sincronizzazioni più rapide (report di sincronizzazione), caricamenti, ecc. Non è necessario tutto per iniziare.

Devo offrire un servlet? Se sì, allora cosa devo restituire per una richiesta? un file JSON o XML o .ics?

Come dice Evert, come si implementano gli endpoint HTTP è la vostra scelta. Servlet sono una valida opzione. Le informazioni principali, gli elenchi di calendari e gli URL per gli elementi all'interno di un calendario vengono restituiti in XML (WebDAV) (risposte multistatus). Il contenuto effettivo di un evento deve essere restituito nel formato iCalendar (.ics).

Quando un utente si iscrive al mio calendario, significa che il suo cliente estrarrà il mio server (chiama il servlet) dopo un intervallo.

Sì.

Alcune implementazioni CalDAV supportano anche Push (dove il server può comunicare al client quando sono disponibili nuovi dati), ma ciò non è ancora standardizzato e le implementazioni variano molto. Il polling può essere mantenuto veloce se il server implementa CTags e sync-reports (RFC 6578).

Problemi correlati