2012-01-11 12 views
10

Me pregunto cuál es la diferencia entre SyncML y CalDAV en términos de características, ventajas y desventajas.¿Cuál es la diferencia entre SyncML y CalDAV?

Estoy tratando de determinar qué tecnología usar para sincronizar eventos/calendarios entre una aplicación web y dispositivos móviles. Necesito manejar conflictos y sincronización bi direccional.

A primera vista, CalDAV parece ser el más adecuado para mis necesidades, pero no estoy seguro de conocer los posibles inconvenientes. SyncML es un estándar, pero leí algunas publicaciones en el blog de Oracle que decía que CalDAV es mejor ...

Sé que Google admite ambos, pero también proporciona ActiveSync (Exchange), que es una tecnología de Microsoft como solución principal. No estoy interesado de esta manera.

Saludos, William

Respuesta

7

Bueno, puedo responderme a mí mismo.

CalDAV

CalDAV es un protocolo en la parte superior de WebDAV que es una extensión de la HTTP protocolo. CalDAV se describe en RFC 4791. Utiliza iCalendar como formato de datos. Hay muchas implementaciones.

Acerca de los conflictos CalDAV utiliza el código de estado 409 Conflicts (HTTP 1.1). El cliente tiene que lidiar con este código de error, hasta donde yo sé, iCal (el cliente Mac) simplemente revierte los cambios locales. Entonces, es bastante fácil definir reglas en el servidor para saber qué hacer si hay conflictos, si no puede resolver uno de ellos, entonces solo tenemos que enviar un código de estado 409.

Como estándar, CalDAV está dedicado a gestionar datos de calendario, y hay muchos clientes.

Desafortunadamente, Android no proporciona ninguna solución nativa de utilizar este protocolo, en realidad no ofrece otra cosa que Exchange ActiveSync (utilizado por Google). Pero hay toneladas de clientes CalDAV en Android Market.

iOS tiene un soporte nativo de CalDAV.

SyncML

sincronización Mrkup lenguaje es un lenguaje independiente de la plataforma de sincronización para gestionar los datos, creados por grandes empresas como Nokia, IBM, ... Es un estándar abierto. Utiliza HTTP como transporte y XML para describir información. Hay varias implementaciones de servidor, Funambol es bien conocido, por ejemplo.

SyncML describe siete sincronizaciones:

  • -sincronización bidireccional: el servidor y el cliente comparte información sobre los cambios, pero el cliente es el primero que envían los cambios;
  • Sincronización lenta: el cliente envía todos sus datos. El servidor determina un delta entre sus datos y los datos del cliente, luego el servidor envía este delta. A menudo se usa en la primera sincronización;
  • Sincronización unidireccional, solo cliente: el cliente envía cambios al servidor;
  • Actualizar la sincronización desde el cliente: el cliente envía todos sus datos, el servidor envía todos sus datos;
  • Sincronización unidireccional, servidor solamente: el servidor envía cambios al cliente;
  • Actualizar la sincronización del servidor: el servidor envía todos sus datos, el cliente reemplaza sus datos por los datos del servidor;
  • Sincronización de alerta de servidor: el servidor le pide al cliente que inicie una sincronización dada.

SyncML maneja conflits en el servidor con un conjunto de reglas predefinidas como Updates mades on the Client always win, Updates mades on the Client always win, ...

SyncML se dedica a sincronizar los datos pero tampoco iOS ni Android apoya. Los teléfonos inteligentes Nokia o Samsung parecen ser compatibles con este protocolo, al igual que Windows Phone 6.

¿Entonces?

Microsoft Exchange ActiveSync es la mejor opción para admitir casi todos los teléfonos inteligentes y clientes pesados ​​también. Pero, no es un estándar abierto, y es comercial, y no lo describí por estas razones, solo recuérdalo.

Sobre móviles Sistemas operativos:

  • Android no admite otra cosa que ActiveSync, pero existen algunos buenos clientes CalDAV;
  • iOS admite CalDAV pero no admite SyncML, y hasta donde yo sé, no hay ningún cliente SyncML para datos de calendario (Funambol proporciona un cliente para los contactos);
  • Windows Phone 7 no admite nada más que ActiveSync;
  • RIM (BlackBerry) no parece ser compatible con CalDAV, pero hay clientes SyncML;
  • No estoy seguro acerca de otros sistemas operativos (como Bada, ...).

En Francia, iOS representa el 60% del mercado móvil, y Android tiene el 30%.

La mejor solución (al menos para mí), es comenzar implementando un servidor CalDAV con un conjunto de reglas personalizadas para manejar conflictos, y luego implementar un servidor SyncML para cubrir el resto del mercado.

+0

No veo cómo puede manejar los conflictos con CalDAV. Nunca hay '409 Conflictos' por lo que he visto. En cambio, los clientes (iOS/DAVDroid) se sincronizan ('PROPRIND' /' REPORT') antes de presionar ('PUT'). Entonces, si hay un objeto de calendario más nuevo en el servidor, sobrescribe el cambio local. En este caso, el cliente nunca informa al servidor sobre el cambio local. Por lo tanto, los cambios como la participación en un evento pueden ignorarse por completo y no hay forma de tratarlo en el lado del servidor ... – KrisWebDev

0

Un par de preguntas para hacer frente mejor a su consulta -

  1. ¿Está usted en el control de los clientes de dispositivos, o le deben depender de clientes nativos en los dispositivos desplegados ya-?

  2. ¿Tiene el control del servidor de sincronización?

  3. ¿Espera sincronizar otros tipos de datos además de los eventos del calendario? NB: elementos como los archivos adjuntos del calendario (por ejemplo, contactos o archivos) cuentan como "otros tipos de datos" para los fines de esta pregunta.

  4. ¿Qué nivel de complejidad necesita para respaldar? Eventos recurrentes, excepciones a eventos recurrentes, calendarios compartidos o colaborativos, usuarios con múltiples calendarios separados (p. Ej., Calendario del dispositivo, calendario de Outlook, calendario de Gmail, etc.)

  5. ¿Hay aplicaciones de escritorio específicas con las que necesites sincronizar (p. ej., Outlook/Exchange), ¿o es solo nube < -> solo dispositivo?

+0

1. clientes nativos 2. Sí, tengo que escribir (en realidad, lo escribí desde que hice esta pregunta) 3. calendarios y datos de contactos 4. nada como eso 5. no, pero si es posible, está bien, siempre proporciono un calendario como aplicación web Por cierto, creo que me contesté a mí mismo. Gracias por su atención :) –

0

androide hace de soporte SyncML - comprobar la aplicación de sincronización funambold
en android-client_funambol (Pagar el foro allí, es bastante activo y tratar las instantáneas para capacidades avanzadas)

+4

** No ** es compatible de forma nativa. –

Cuestiones relacionadas