В чем разница между SyncML и CalDAV?

Интересно, в чем разница между SyncML и CalDAV с точки зрения возможностей, плюсов и минусов.

Я пытаюсь определить, какую технологию использовать для синхронизации событий/календарей между веб-приложением и мобильными устройствами. Мне нужно обрабатывать конфликты и бинарную синхронизацию.

На первый взгляд, CalDAV представляется наиболее подходящим для моих нужд, но я не уверен, что знаю недостатки. SyncML является стандартом, но я читал некоторые сообщения в блоге Oracle, в которых говорилось, что CalDAV лучше...

Я знаю, что Google поддерживает оба, но также предоставляет ActiveSync (Exchange), который является технологией Microsoft в качестве основного решения. Меня это не интересует.

Cheers, Уильям

Ответ 1

Хорошо, я могу ответить сам.

CalDAV

CalDAV - это протокол поверх WebDAV, который является расширением протокола HTTP. CalDAV описан в RFC 4791. Он использует iCalendar как формат данных. Существует множество реализаций.

О конфликтах CalDAV использует код состояния 409 Conflicts (HTTP 1.1). Клиент должен иметь дело с этим кодом ошибки, насколько я знаю, iCal (клиент Mac) просто восстанавливает локальные изменения. Затем довольно легко определить правила на сервере, чтобы знать, что делать, если есть конфликты, если вы не можете решить один из них, тогда нам просто нужно отправить код состояния 409.

В качестве стандарта CalDAV предназначен для управления данными календаря, и есть много клиентов.

К сожалению, Android не предоставляет никакого родного решения для использования этого протокола, на самом деле он не предоставляет ничего, кроме Exchange ActiveSync (используется Google). Но на Android Market есть несколько клиентов CalDAV.

iOS имеет встроенную поддержку CalDAV.

SyncML

Синхронизация Mrkup Language - это независимый от платформы язык синхронизации для управления данными, созданный такими крупными компаниями, как Nokia, IBM,... Это открытый стандарт. Он использует HTTP как транспорт и XML для описания информации. Там различные серверные реализации, Funambol, хорошо известны.

SyncML описывает семь синхронизаций:

  • Двухсторонняя синхронизация: и сервер, и клиент совместно используют информацию об изменениях, но клиент первым отправляет изменения;
  • Медленная синхронизация: клиент отправляет все свои данные. Сервер определяет дельта между его данными и данными клиента, затем сервер отправляет эту дельта. Он часто используется при первой синхронизации;
  • Односторонняя синхронизация, только клиент: клиент отправляет изменения на сервер;
  • Обновить синхронизацию с клиента: клиент отправляет все свои данные, сервер отправляет все свои данные;
  • Односторонняя синхронизация, только сервер: сервер отправляет изменения клиенту;
  • Обновить синхронизацию с сервера: сервер отправляет все свои данные, клиент заменяет свои данные данными сервера;
  • Сертифицированная серверная синхронизация: сервер запрашивает у клиента запуск данной синхронизации.

SyncML обрабатывает конфликты на сервере с набором предопределенных правил, таких как Updates mades on the Client always win, Updates mades on the Client always win,...

SyncML предназначен для синхронизации данных, но ни поддержка iOS, ни Android не поддерживает. Смартфоны Nokia или Samsung, похоже, поддерживают этот протокол, а также Windows Phone 6.

Так?

Microsoft Exchange ActiveSync - лучший выбор для поддержки практически всех смартфонов и тяжелых клиентов. Но это не открытый стандарт, а коммерческий, и я не описал его по этим причинам, просто запомните его.

О мобильных операционных системах:

  • Android не поддерживает ничего, кроме ActiveSync, но существуют некоторые хорошие клиенты CalDAV;
  • iOS поддерживает CalDAV, но не поддерживает SyncML, и, насколько мне известно, нет клиента SyncML для данных календаря (Funambol предоставляет клиента для контактов);
  • Windows Phone 7 не поддерживает ничего, кроме ActiveSync;
  • RIM (BlackBerry), похоже, не поддерживает CalDAV, но есть клиенты SyncML;
  • Я не уверен в других ОС (например, Bada,...).

Во Франции iOS представляет 60% мобильного рынка, а Android имеет 30%.

Лучшее решение (по крайней мере для меня) - начать с внедрения сервера CalDAV с набором настраиваемых правил для обработки конфликтов, а затем для внедрения сервера SyncML для покрытия остальной части рынка.

Ответ 2

Несколько вопросов, чтобы лучше ответить на ваш запрос -

  • Вы управляете клиентами устройства или должны полагаться на собственные клиенты на уже развернутых устройствах?

  • Вы управляете сервером синхронизации?

  • Ожидаете ли вы синхронизировать другие типы данных, кроме событий календаря? NB: такие вещи, как вложения календаря (например, контакты или файлы), считаются "другими типами данных" для целей этого вопроса.

  • Какой уровень сложности вам нужен для поддержки? Периодические события, исключения из повторяющихся событий, общие или совлокальные каландры, пользователи с несколькими отдельными календарями (например, календарь устройства, календарь Outlook, календарь Gmail и т.д.)

  • Существуют ли конкретные настольные приложения, которые вам нужно синхронизировать с (например, Outlook/Exchange), или это только полностью облако? lt > → устройство?

Ответ 3

андроид поддерживает syncml - проверьте приложение funambold sync
на android-client_funambol (проверьте форум там, его довольно активную и попробуйте моментальные снимки для расширенных возможностей)