Ответ 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 для покрытия остальной части рынка.