SyncML和CalDAV有什么区别?

时间:2012-01-11 23:57:13

标签: web-applications mobile synchronization caldav syncml

我想知道SyncML和CalDAV在功能,优点和缺点方面有什么区别。

我正在尝试确定使用哪种技术来同步Web应用和移动设备之间的事件/日历。我需要处理冲突和双向同步。

乍一看,CalDAV似乎最适合我的需求,但我不确定是否存在可能的缺点。 SyncML是一个标准,但我在Oracle的博客上阅读了一些帖子,其中说CalDAV更好......

我知道谷歌支持两者,但也提供ActiveSync(Exchange),这是Microsoft技术的主要解决方案。我对这种方式不感兴趣。

干杯, 威廉

3 个答案:

答案 0 :(得分:7)

好吧,我可以自己回答。

的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

Synchronization Mrkup Language是一种独立于平台的同步语言,用于管理由诺基亚,IBM等主要公司创建的数据......这是一个开放的标准。它使用HTTP作为传输和XML来描述信息。有各种服务器实现,例如Funambol是众所周知的。

SyncML描述了七个同步:

  • 双向同步:服务器和客户端共享有关更改的信息,但客户端是第一个发送更改的客户端;
  • 慢速同步:客户端发送其所有数据。服务器确定其数据和客户端数据之间的增量,然后服务器发送此增量。它通常用于第一次同步;
  • 单向同步,仅限客户端:客户端向服务器发送更改;
  • 从客户端刷新同步:客户端发送其所有数据,服务器发送其所有数据;
  • 单向同步,仅限服务器:服务器向客户端发送更改;
  • 从服务器刷新同步:服务器发送其所有数据,客户端用服务器的数据替换其数据;
  • 服务器提醒同步:服务器要求客户端启动给定的同步。

SyncML使用一组预定义规则处理服务器上的配置,例如Updates mades on the Client always winUpdates mades on the Client always win,...

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服务器以覆盖其他市场。

答案 1 :(得分:0)

有几个问题可以更好地解决您的问题 -

  1. 您是否可以控制设备客户端,还是必须依赖已部署设备上的本机客户端?

  2. 您是否掌控同步服务器?

  3. 除了日历活动之外,您是否还需要同步其他类型的数据?注意:就此问题而言,日历附件(例如,联系人或文件)等内容会被视为“其他类型的数据”。

  4. 您需要支持多大程度的复杂性?重复活动,重复活动例外,共享或协作日历,具有多个单独日历的用户(例如,设备日历,Outlook日历,Gmail日历等)

  5. 您是否需要与之同步的特定桌面应用(例如,Outlook / Exchange),或者这是否完全是云< - >仅限设备?

答案 2 :(得分:0)

android确实支持syncml - 检查funambold同步应用程序在android-client_funambol(在那里查看论坛,它非常活跃并尝试快照以获得高级功能)