В чем разница между SyncML и CalDAV? - PullRequest
10 голосов
/ 12 января 2012

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

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

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

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

Ура, William

Ответы [ 3 ]

7 голосов
/ 21 января 2012

Ну, я могу ответить себе.

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, чтобы охватить весь остальной рынок.

0 голосов
/ 18 февраля 2012

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

0 голосов
/ 19 января 2012

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

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

  2. Контролируете ли вы сервер синхронизации?

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

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

  5. Существуют ли специальные рабочие столыприложения, с которыми нужно синхронизироваться (например, Outlook / Exchange), или это исключительно облачное <-> устройство?

...