2012-01-11 14 views
10

我想知道SyncML和CalDAV在功能,優點和缺點方面有什麼區別。SyncML和CalDAV有什麼區別?

我試圖確定使用哪種技術來同步Web應用程序和移動設備之間的事件/日曆。我需要處理衝突和雙向同步。

乍看之下,CalDAV似乎是最適合我的需求,但我不確定知道可能性的缺點。 SyncML是一個標準,但我在甲骨文博客上看到一些表示CalDAV更好的帖子...

我知道谷歌支持這兩種技術,但同時也提供ActiveSync(Exchange),這是微軟技術的主要解決方案。我對這種方式不感興趣。

乾杯, 威廉

回答

7

嗯,我可以回答自己。

的CalDAV

的CalDAV是上的WebDAV頂部的協議,該協議是HTTP 協議的擴展。 CalDAV描述於RFC 4791。它使用iCalendar作爲數據格式。有很多的實現。

關於衝突CalDAV使用409 Conflicts狀態碼(HTTP 1.1)。客戶必須處理這個錯誤代碼,據我所知,iCal(Mac客戶端)只是恢復本地更改。 然後,在服務器中定義規則以便知道如果發生衝突時如何處理,如果無法解決其中一個問題,那麼我們只需發送一個409狀態代碼就很容易。

作爲標準,CalDAV致力於管理日曆數據,並且有很多客戶端。

不幸的是,Android的沒有提供使用該協議的任何原生解決方案,實際上它不提供其他任何東西比Exchange ActiveSync的(由谷歌使用)。但Android Market上有大量的CalDAV客戶端。

iOS擁有CalDAV的原生支持。

的SyncML

同步MRKUP語言是管理數據,由諾基亞,IBM,各大企業創造了一個獨立於平臺的同步語言......這是一個開放的標準。它使用HTTP作爲傳輸和XML來描述信息。有各種服務器實現,例如Funambol是衆所周知的。

SyncML描述7個同步:

  • 雙向同步:關於修改服務器和客戶端共享信息,但客戶端是其中第一個發送的變化;
  • 慢同步:客戶端發送其所有數據。服務器確定其數據和客戶端數據之間的增量,然後服務器發送該增量。它經常用於第一次同步;
  • 單向同步,僅限客戶端:客戶端向服務器發送更改;
  • 來自客戶端的刷新同步:客戶端發送其所有數據,服務器發送其所有數據;
  • 單向同步,僅限服務器:服務器向客戶端發送更改;
  • 從服務器刷新同步:服務器發送其所有數據,客戶端用服務器的數據替換其數據;
  • 服務器警報同步:服務器要求客戶端啓動給定的同步。

的SyncML處理服務器上conflits與像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服務器來覆蓋其餘的市場。

+0

我不明白你如何處理與CalDAV的衝突。從我見過的情況來看,從來沒有任何「409衝突」。相反,客戶端(iOS/DAVDroid)在推送('PUT')之前同步('PROPRIND' /'REPORT')。因此,如果服務器上有新的日曆對象,它會覆蓋本地更改。在這種情況下,客戶端從不通知服務器本地更改!因此,像事件參與這樣的變化可能會被完全忽略,並且在服務器端無法處理它...... – KrisWebDev 2016-05-01 20:29:37

0

一對夫婦的問題,以更好地解決您的問題 -

  1. 您在設備客戶端的控制,或者您必須依靠本地客戶端上已經部署的設備?

  2. 您是否在控制同步服務器?

  3. 您是否期望除了日曆事件之​​外還需要同步其他類型的數據?注意:就日期附件(例如,聯繫人或文件)而言,這個問題可以算作「其他類型的數據」。

  4. 您需要支持哪種級別的複雜性?定期事件,重複事件的例外,共享或合作日曆,具有多個單獨日曆的用戶(例如,設備日曆,Outlook日曆,Gmail日曆等)

  5. 是否需要與特定桌面應用程序同步例如Outlook/Exchange),還是完全是雲< - >設備?

+0

1.本地客戶端 2.是的,我必須寫它(實際上,自從我問這個問題以來我寫過它) 3.日曆和聯繫人數據 4.沒有那樣的東西 5.不,但如果可能的話,那很好,我曾經提供一個日曆作爲web應用程序 順便說一句,我想我自己回答。感謝您的關注:) – 2012-01-21 13:19:34

0

Android提供支持的SyncML - 檢查funambold同步應用
android-client_funambol(檢出論壇裏面,它的相當活躍,並嘗試提供高級功能快照)

+4

它不受**本機支持。 – 2012-02-18 17:49:50