我想知道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 winUpdates mades on the Client always win,…)来处理服务器上的冲突。

    SyncML专用于同步数据,但是 iOS Android 都不支持它。诺基亚或三星智能手机似乎支持该协议(protocol)以及Windows Phone 6。

    所以?

    Microsoft Exchange ActiveSync是支持几乎所有智能手机以及重型客户端的最佳选择。但是,它不是一个开放标准,它是商业性的,出于这些原因,我没有描述它,请记住它。

    关于移动操作系统:
  • Android 除了ActiveSync之外不支持其他任何功能,但是存在一些良好的CalDAV客户端;
  • iOS 支持CalDAV但不支持SyncML,据我所知,还没有用于日历数据的SyncML客户端(Funambol为联系人提供了客户端);
  • Windows Phone 7 除ActiveSync之外不支持其他任何功能;它仅支持ActiveSync。
  • RIM (BlackBerry)似乎不支持CalDAV,但是有SyncML客户端。
  • 我不确定其他操作系统(例如Bada等)。

  • 在法国, iOS占移动市场的60%,而 Android则占的30%。

    最好的解决方案(至少对我来说)是,首先使用带有一组自定义规则的CalDAV服务器来处理冲突,然后再实现SyncML服务器以覆盖其他市场。

    09-25 20:36