10

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

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

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

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

干杯,威廉

4

3 回答 3

7

好吧,我可以回答自己。

卡尔达夫

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 专门用于同步数据,但iOSAndroid都不支持它。诺基亚或三星智能手机似乎支持此协议,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 服务器来覆盖市场的其余部分。

于 2012-01-21T13:18:23.097 回答
0

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

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

  2. 您可以控制同步服务器吗?

  3. 除了日历事件之​​外,您是否预计需要同步其他类型的数据?注意:就本问题而言,诸如日历附件(例如联系人或文件)之类的东西算作“其他类型的数据”。

  4. 您需要支持什么级别的复杂性?定期事件、定期事件例外、共享或协作日历、具有多个单独日历(例如,设备日历、Outlook 日历、Gmail 日历等)的用户

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

于 2012-01-19T17:37:03.593 回答
0

android does support syncml - check the funambold sync app
at android-client_funambol (checkout the forum there, its quite active and try the snapshots for advanced capabilities)

于 2012-02-18T15:37:13.130 回答