我想知道SyncML和CalDAV在功能,优点和缺点方面有什么区别。
我正在尝试确定要使用哪种技术,以便在Web应用程序和移动设备之间同步事件/日历。我需要处理冲突和双向同步。
乍一看,CalDAV似乎最适合我的需求,但我不确定是否可能存在缺点。 SyncML是一个标准,但是我在Oracle博客上读到了一些帖子,其中说CalDAV更好。
我知道Google支持这两种功能,但也提供ActiveSync(Exchange),这是一种Microsoft技术作为主要解决方案。我对这种方式不感兴趣。
干杯,
威廉
最佳答案
好吧,我可以回答自己。
加州DAV
CalDAV 是WebDAV之上的协议(protocol),它是 HTTP 协议(protocol)的扩展。在RFC 4791中描述了CalDAV。它使用iCalendar作为数据格式。有很多实现。
关于冲突CalDAV使用409 Conflicts
状态代码(HTTP 1.1)。据我所知,客户端必须处理此错误代码,iCal(Mac客户端)仅还原本地更改。
然后,在服务器中定义规则很容易知道是否存在冲突,如果您不能解决其中之一,那么我们只需要发送409
状态码即可。
作为标准, CalDAV 专用于管理日历数据,并且有很多客户端。
不幸的是, Android 没有提供使用此协议(protocol)的任何 native 解决方案,实际上除了Exchange ActiveSync (由Google使用)之外,没有提供任何其他功能。但是Android市场上有大量的CalDAV客户。
iOS 具有对CalDAV的 native 支持。
同步语言
同步Mrkup语言是由诺基亚,IBM等主要公司创建的用于管理数据的独立于平台的同步语言,它是一种开放标准。它使用HTTP作为传输方式,并使用XML描述信息。有各种各样的服务器实现,例如Funambol是众所周知的。
SyncML描述了七个同步:
双向同步:服务器和客户端都共享有关更改的信息,但是客户端是第一个发送更改的信息。
SyncML使用一组预定义规则(例如
Updates mades on the Client always win
,Updates mades on the Client always win
,…)来处理服务器上的冲突。SyncML专用于同步数据,但是 iOS 和 Android 都不支持它。诺基亚或三星智能手机似乎支持该协议(protocol)以及Windows Phone 6。
所以?
Microsoft Exchange ActiveSync是支持几乎所有智能手机以及重型客户端的最佳选择。但是,它不是一个开放标准,它是商业性的,出于这些原因,我没有描述它,请记住它。
关于移动操作系统:
在法国, iOS占移动市场的60%,而 Android则占的30%。
最好的解决方案(至少对我来说)是,首先使用带有一组自定义规则的CalDAV服务器来处理冲突,然后再实现SyncML服务器以覆盖其他市场。