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