好吧,我可以回答自己。
卡尔达夫
CalDAV是WebDAV之上的协议,它是HTTP协议的扩展。CalDAV 在RFC 4791中进行了描述。它使用iCalendar作为数据格式。有很多实现。
关于冲突 CalDAV 使用409 Conflicts
状态码 (HTTP 1.1)。客户端必须处理此错误代码,据我所知,iCal(Mac 客户端)只是恢复本地更改。然后,很容易在服务器中定义规则来知道如果有冲突该怎么办,如果你不能解决其中一个,那么我们只需要发送一个409
状态码。
作为一个标准,CalDAV专门用于管理日历数据,并且有很多客户端。
不幸的是,Android没有提供任何原生解决方案来使用此协议,实际上它除了 Exchange ActiveSync (由 Google 使用)之外没有提供任何其他解决方案。但 Android 市场上有大量 CalDAV 客户端。
iOS原生支持 CalDAV。
同步机器学习
同步 Mrkup 语言是一种独立于平台的同步语言,用于管理数据,由诺基亚、IBM 等大公司创建……它是一个开放标准。它使用 HTTP 作为传输和 XML 来描述信息。有各种服务器实现,例如Funambol是众所周知的。
SyncML描述了七种同步:
- 双向同步:服务器和客户端共享有关更改的信息,但客户端是第一个发送更改的;
- 慢同步:客户端发送所有数据。服务器确定其数据和客户端数据之间的增量,然后服务器发送此增量。常用于第一次同步;
- 单向同步,仅客户端:客户端将更改发送到服务器;
- 从客户端刷新同步:客户端发送所有数据,服务器发送所有数据;
- 单向同步,仅服务器:服务器将更改发送到客户端;
- 从服务器刷新同步:服务器发送所有数据,客户端将其数据替换为服务器数据;
- 服务器警报同步:服务器要求客户端启动给定的同步。
SyncML 使用一组预定义的规则来处理服务器上的冲突,例如Updates mades on the Client always win
, Updates mades on the Client always win
, ...</p>
SyncML 专门用于同步数据,但iOS和Android都不支持它。诺基亚或三星智能手机似乎支持此协议,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 服务器来覆盖市场的其余部分。