亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

同步服務(wù)器處理的制作方法

文檔序號:6593488閱讀:299來源:國知局

專利名稱::同步服務(wù)器處理的制作方法
技術(shù)領(lǐng)域
:本申請涉及數(shù)據(jù)同步服務(wù)器處理。
背景技術(shù)
:用作遠程數(shù)據(jù)倉庫的網(wǎng)絡(luò)設(shè)施能夠儲存從本地客戶端上載的數(shù)據(jù)。遠程數(shù)據(jù)倉庫中儲存的數(shù)據(jù)可以被修改、管理、與其他客戶端共享、用來構(gòu)建網(wǎng)頁等??蛻舳伺c服務(wù)器之間的數(shù)據(jù)同步可以用同步協(xié)議(例如開放移動聯(lián)盟-數(shù)據(jù)同步協(xié)議OMADS/SyncML(此前稱為SyncML協(xié)議))來進行。OMSDA/SyncML是這樣一種同步協(xié)議它允許數(shù)據(jù)類(dataclass)的串行同步,并對于每個數(shù)據(jù)類會要求五個或更多個來回(roundtrip)。
發(fā)明內(nèi)容本發(fā)明公開了用于提供執(zhí)行各種同步服務(wù)器處理的同步服務(wù)器的技術(shù)和系統(tǒng)等內(nèi)容。在一個方面,對數(shù)據(jù)同步會話進行處理包括對來自一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項。根據(jù)同步會話的一個或多個屬性,這一個或多個客戶端被選擇性地識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成支持由服務(wù)器針對一個或多個數(shù)據(jù)類而定義的格局。檢測這一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。各種實現(xiàn)方式可以視情況包含下述特征中的一項或多項。當檢測這一個或多個客戶端被配置成支持記錄級差異化時,這一個或多個數(shù)據(jù)記錄中改變的數(shù)據(jù)項可以被識別。另外,響應(yīng)于對同步會話進行處理,可以針對與這一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變而生成改變?nèi)罩?。另外,響?yīng)于對同步會話進行處理,與服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫可以被更新,以反映在所生成的改變?nèi)罩局斜粯俗R出的對于一個或多個數(shù)據(jù)記錄的一個或多個改變。此外,還可以使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與服務(wù)器相關(guān)聯(lián)的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的該另一數(shù)據(jù)倉庫中儲存的數(shù)據(jù)記錄。另外,訪問和修改所述另一數(shù)據(jù)倉庫可以包括對所生成的改變?nèi)罩具M行處理以更新所述另一數(shù)據(jù)倉庫。此外,還可以從一個或多個客戶端接收對于一個或多個數(shù)據(jù)記錄的更新;并可以在這些客戶端與服務(wù)器的數(shù)據(jù)庫房之間識別一個或多個沖突。來自這些客戶端的更新可以被混合。另外,還可以通過給請求同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。此外,當檢測到這一個或多個客戶端被識別為非受信客戶端時,可以從由服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局檢測與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個差別(discrepancy)。來自客戶端的改變的一個或多個屬性可以包括用于數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。在另一個方面,這份說明書中描述的技術(shù)可以被實現(xiàn)為計算機程序產(chǎn)品,其包含在計算機可讀介質(zhì)上,并可操作以使數(shù)據(jù)處理設(shè)備執(zhí)行下述各種操作。該計算機程序產(chǎn)品可以操作以使數(shù)據(jù)處理設(shè)備對來自一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項。該計算機程序產(chǎn)品可以操作以使數(shù)據(jù)處理設(shè)備根據(jù)同步會話的一個或多個屬性,選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成對于由服務(wù)器針對這些數(shù)據(jù)記錄而定義的格局實施關(guān)系數(shù)據(jù)完整性約束。該計算機程序產(chǎn)品可以操作以使數(shù)據(jù)處理設(shè)備檢測這一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。各種實現(xiàn)方式可以視情況包括下述特征中的一項或多項。該計算機程序產(chǎn)品可以操作以使數(shù)據(jù)處理設(shè)備當檢測到所述一個或多個客戶端被配置成支持記錄級差異化時,識別所述一個或多個數(shù)據(jù)記錄中被改變的數(shù)據(jù)項。要求保護的該計算機程序產(chǎn)品可以操作以使數(shù)據(jù)處理設(shè)備響應(yīng)于對同步會話進行處理,而生成針對與這一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變的改變?nèi)罩?,并更新與服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫,以反映在所生成的改變?nèi)罩局斜粯俗R出的對于一個或多個數(shù)據(jù)記錄的一個或多個改變。該計算機程序產(chǎn)品還可以操作以使數(shù)據(jù)處理設(shè)備使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與服務(wù)器相連的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的所述另一數(shù)據(jù)倉庫。該計算機程序產(chǎn)品還可以操作以使數(shù)據(jù)處理設(shè)備訪問所述另一數(shù)據(jù)倉庫,包括對所生成的改變?nèi)罩具M行處理以更新所述另一數(shù)據(jù)倉庫。另外,該計算機程序產(chǎn)品還可以操作以使數(shù)據(jù)處理設(shè)備從這一個或多個客戶端接收對于一個或多個數(shù)據(jù)記錄的更新。在所接收的更新和與服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫房處儲存的數(shù)據(jù)記錄之間識別一個或多個沖突。來自這些客戶端的更新被混合,以確保每個參與者(客戶端或服務(wù)器數(shù)據(jù)庫房)接收對于數(shù)據(jù)集的一組更新,這組更新在被應(yīng)用于接收者的數(shù)據(jù)庫房時,會在所有的遠程數(shù)據(jù)庫房中產(chǎn)生相同的數(shù)據(jù)集。該計算機程序產(chǎn)品還可以操作以使數(shù)據(jù)處理設(shè)備通過給請求同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。此外,該計算機程序產(chǎn)品還可以操作以使數(shù)據(jù)處理設(shè)備當檢測到所述一個或多個客戶端被識別為非受信客戶端時,從由服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局識別與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個差別。同步會話的這一個或多個屬性可以包括用于數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。在另一個方面,一種系統(tǒng)包括被配置成運行傳輸協(xié)議以及一個或多個同步協(xié)議的處理器,傳輸協(xié)議允許打開與一個或多個客戶端裝置(這一個或多個客戶端裝置被配置為在一個或多個同步模式中同步數(shù)據(jù))的一個或多個連接,同步協(xié)議允許服務(wù)器通過所打開的一個或多個連接來與一個或多個客戶端同步一個或多個數(shù)據(jù)類。所述一個或多個同步協(xié)議允許服務(wù)器執(zhí)行各種操作。同步協(xié)議允許服務(wù)器對來自所述一個或多個客戶端的發(fā)起同步會話的請求進行處理。這一個或多個同步協(xié)議還允許服務(wù)器根據(jù)同步會話的一個或多個屬性,選擇性地將一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成支持由所述服務(wù)器針對這些數(shù)據(jù)記錄而定義的格局。此外,這一個或多個同步協(xié)議還允許服務(wù)器檢測這一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。各種實現(xiàn)方式可以視情況包括下述特征中的一項或多項。處理器被配置成運行所述一個或多個同步協(xié)議,從而當所述一個或多個客戶端被配置成支持記錄級差異化時,識別所述一個或多個數(shù)據(jù)記錄中被改變的數(shù)據(jù)項。另外,處理器可以被配置為運行所述一個或多個同步協(xié)議,以響應(yīng)于對所述同步會話進行處理而執(zhí)行下述內(nèi)容針對與這一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變而生成改變?nèi)罩?;更新與服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫,以反映在所生成的改變?nèi)罩局斜粯俗R出的對于一個或多個數(shù)據(jù)記錄的所述一個或多個改變。處理器可以被配置為運行所述一個或多個同步協(xié)議,以使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與所述服務(wù)器相連的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的數(shù)據(jù)倉庫中儲存的數(shù)據(jù)記錄。另外,處理器還可以被配置為運行所述一個或多個同步協(xié)議以通過對所生成的改變?nèi)罩具M行處理而更新所述另一數(shù)據(jù)倉庫,來修改所述另一數(shù)據(jù)倉庫。另外,處理器還可以被配置成運行所述一個或多個同步協(xié)議,以從一個或多個客戶端接收對于一個或多個數(shù)據(jù)記錄的更新;并識別所接收的更新和與服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫房處儲存的數(shù)據(jù)記錄之間的一個或多個沖突。來自所述一個或多個客戶端的更新可以被混合。處理器還可以被配置成運行所述一個或多個同步協(xié)議,以通過給請求同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。此外,該服務(wù)器還可以被配置成當檢測到所述一個或多個客戶端被識別為非受信客戶端時,從由服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局識別與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個差別。同步會話的這一個或多個屬性可以包括用于這些數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。實現(xiàn)根據(jù)本發(fā)明的技術(shù)和系統(tǒng)可能提供各種優(yōu)點。這里所述同步服務(wù)器處理可以允許以各種粒度(granularity)進行同步改變處理。例如,同步服務(wù)器可以訪問字段級差異化,其中,只有被改變的數(shù)據(jù)(差異)被交換。這可以減少對其他客戶端和服務(wù)器進行未改變數(shù)據(jù)項的不必要的更新。另外,同步服務(wù)器支持受信客戶端和非受信客戶端。當與受信客戶端進行接口時,同步服務(wù)器可以跳過對于非受信客戶端可能是必須的某些完整性檢查,以改善服務(wù)器的可擴展性(scalability)。圖1的框圖示出將多個客戶端類型和多個客戶端與一個或多個服務(wù)器進行同步的示例系統(tǒng)。圖2示出了用于維護同步數(shù)據(jù)庫和客戶端狀態(tài)的同步服務(wù)器的示例性內(nèi)部模型。圖3的框圖示出了用于同步服務(wù)器的示例性應(yīng)用架構(gòu)。圖4的框圖示出了示例性的同步服務(wù)器系統(tǒng)架構(gòu)。圖fe、5b、5c、5dje、5f、5g*5h示出了同步服務(wù)器處理的示例。圖6示出了用于執(zhí)行RLD向FLD轉(zhuǎn)換的示例性服務(wù)器處理。各附圖中相同的符號和標號表示相同的要素。具體實施例方式本申請公開了用于對服務(wù)器與多個客戶端之間的同步進行管理的技術(shù)和系統(tǒng)。8圖1的框圖示出了用于在服務(wù)器與多個客戶端之間對數(shù)據(jù)進行同步的示例性系統(tǒng)100。系統(tǒng)100包括通過網(wǎng)絡(luò)170連接到通用服務(wù)器140的同步服務(wù)器110。同步服務(wù)器110被設(shè)計成通過網(wǎng)絡(luò)190來與一個或多個web客戶端120進行接口。另外,同步服務(wù)器110還被設(shè)計成通過網(wǎng)絡(luò)180來與一個或多個客戶端裝置130進行接口。同步服務(wù)器110連接到同步數(shù)據(jù)倉庫112,使同步服務(wù)器110能夠作為針對web客戶端120和客戶端裝置130的數(shù)據(jù)庫房而工作。數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)庫是可以使用的數(shù)據(jù)倉庫112的一種類型。通用服務(wù)器140被設(shè)計成通過網(wǎng)絡(luò)160來與一個或多個客戶端計算機150(例如臺式機和膝上型計算機)進行接口。通用服務(wù)器140連接到通用數(shù)據(jù)倉庫142,使通用服務(wù)器140能夠作為通用數(shù)據(jù)庫房而工作。網(wǎng)絡(luò)160、170、180和190可以包括各種有線的和無線的網(wǎng)絡(luò),例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、以太網(wǎng)、互聯(lián)網(wǎng)等。網(wǎng)絡(luò)160、170、180和190可以是單個網(wǎng)絡(luò),也可以各自是單獨的網(wǎng)絡(luò)。通用服務(wù)器140可以包括提供web服務(wù)和互聯(lián)網(wǎng)工具(例如DotMacweb服務(wù)和工具)的web服務(wù)器。可用的web服務(wù)可以與臺式機或膝上型計算機的操作系統(tǒng)(0集成在一起。例如,DotMac服務(wù)和工具可以與MacOS緊密地集成。可用的DotMac服務(wù)之一包括iDisks在線盤儲存服務(wù),該服務(wù)可以作為任何其他的卷(volume)而安裝在MacOS臺式機上。另外,其他用戶的iDisck的公開部分也可以安裝在臺式機上。利用iDisks,用戶可以向臺式機上載文件和從臺式機下載文件。另外,iWeb可以使用戶能夠創(chuàng)建網(wǎng)頁,這些網(wǎng)頁可以被上載到iDisk并被公開。類似地,使用iCal、iMovie、iPhoto、GarageBand和iTunes⑧庫工具等,其他數(shù)據(jù)也可以被上載到iDisk和從iDisk下載。其他的DotMac服務(wù)可以包括通過Omac.com的web電子郵件服務(wù),其既支持郵局協(xié)議(POP)也支持因特網(wǎng)消息訪問協(xié)議(IMAP)。通用服務(wù)器140可以使用在基于web的分布式創(chuàng)作和版本控制(WebDAV)上分層的結(jié)構(gòu)化數(shù)據(jù)同步語義(semantics)來使能計算機對計算機的同步。WebDAV是一組對超文本傳輸協(xié)議(HTTP)的擴展,它允許用戶協(xié)作編輯和管理遠程萬維網(wǎng)服務(wù)器上的文件。WebDAV提供了對遠程服務(wù)器或web服務(wù)器(例如通用服務(wù)器140)上的文檔進行創(chuàng)建、改變和移動的功能性。WebDAV使得能夠進行可以由任何計算機從任何地方訪問的、基于web的一般文件儲存。在工作中,WebDAV協(xié)議使每個客戶端能夠鎖定特定的資源,以防止不期望地被其他客戶端修改。WebDAV還支持各種特性,例如創(chuàng)建、移除和查詢與作者、修改日期等有關(guān)的信息。WebDAV支持姓名空間管理,以使資源(例如網(wǎng)頁或其他文檔)能夠在服務(wù)器的姓名空間中被拷貝和移動。此外,WebDAV還允許創(chuàng)建、移除和列出資源。在WebDAV上分層的結(jié)構(gòu)化數(shù)據(jù)同步語義可以包括同步分布式創(chuàng)作和版本控制(SyncDAV)協(xié)議,該協(xié)議允許計算機對計算機的同步。例如,SyncDAV協(xié)議可以允許在MacOSX(Tiger/Leopard)中進行Mac對Mac同步。另外,SyncDAV協(xié)議還允許計算機與iDisk或與其他計算機進行同步,以對各種用戶數(shù)據(jù)(例如地址簿條目、iCal日期、Mfari書簽、鑰匙鏈(keychain)、郵件帳戶、郵件規(guī)則、郵件簽名、智能郵箱等)進行更新和同步。web客戶端120可以包括各種DocMaeweb應(yīng)用。另外,客戶端裝置130可以包括移動裝置,例如移動電話132、個人數(shù)字助理(PDA)134、手持數(shù)據(jù)處理裝置136等。移動電話132可以包括智能電話和集成移動裝置,例如iPhone。手持數(shù)據(jù)處理裝置可以包括音頻回放裝置,例如MP3播放器和iPod裝置。同步是這樣的處理它通過對在上次已知兩個不同數(shù)據(jù)庫房一致之后這些數(shù)據(jù)庫房中的每一者已發(fā)生的改變周期性地進行比較,而在這些數(shù)據(jù)庫房之間維持一致性。數(shù)據(jù)庫房可以包括web客戶端120和客戶端裝置130作為一方,以及同步服務(wù)器110和通用服務(wù)器140作為另一方。為了對每一方同步數(shù)據(jù),這些數(shù)據(jù)庫房被配置有各種能力。例如,每個數(shù)據(jù)庫房被配置成在受到請求時提供全部數(shù)據(jù)。另外,每個數(shù)據(jù)庫房還被配置成識別和提供自從上次同步以來的改變。每個數(shù)據(jù)庫房被配置成對要保持同步的格局(schema)達成一致。每個數(shù)據(jù)庫房被配置成對于數(shù)據(jù)表示形式(!^presentation)達成一致。每個數(shù)據(jù)庫房被配置成對于同步基原(primitive,即添加、更新、刪除)的語義達成一致。此外,每個數(shù)據(jù)庫房還被配置成如果在同步過程中發(fā)生問題,則回滾(rollback)到此前的狀態(tài),以避免破壞這些數(shù)據(jù)庫房。經(jīng)過同步的數(shù)據(jù)遵循關(guān)系模型,并被劃分成“格局”或“數(shù)據(jù)類”,這些“格局”或“數(shù)據(jù)類”對結(jié)構(gòu)化數(shù)據(jù)類型(“實體”)的定義進行了分組。每個數(shù)據(jù)類由格局表示,格局是有關(guān)實體和屬性的網(wǎng)絡(luò)。給定數(shù)據(jù)類中的實體可以通過“關(guān)系”來相互引用。分立數(shù)據(jù)類中的實體之間的關(guān)系被禁用,因此每個數(shù)據(jù)類完全獨立于其他數(shù)據(jù)類。從用戶的角度來看,數(shù)據(jù)類可以看起來由分開的專門應(yīng)用來管理。例如,“聯(lián)系人”數(shù)據(jù)類可以主要由地址簿應(yīng)用來管理,而“日歷”數(shù)據(jù)類可以由日歷應(yīng)用來管理。同步服務(wù)器110允許各種同步模式,包括慢速、復(fù)位和快速??蛻舳搜b置和服務(wù)器首次同步時,針對數(shù)據(jù)類的全部數(shù)據(jù)被交換,以使被認為相同的現(xiàn)有數(shù)據(jù)項“匹配”。為了針對隨后的同步操作優(yōu)化同步和網(wǎng)絡(luò)帶寬利用水平,客戶端裝置130和服務(wù)器110可以僅交換二者自從上次同步以來改變過的數(shù)據(jù)。這樣,每一實體(即客戶端裝置或服務(wù)器)應(yīng)當能夠確定哪些本地改變應(yīng)當被發(fā)送到另一實體。另外,每一實體應(yīng)當能夠檢測是否發(fā)生了下述情形所述情形要求在“快速”同步能夠恢復(fù)之前交換更多數(shù)據(jù)。當客戶端裝置130和同步服務(wù)器110首次同步以建立共同基準線用于隨后的“僅差異數(shù)據(jù)”交換時,可以要求慢速同步模式。在慢速同步過程中,客戶端裝置130把針對數(shù)據(jù)類的全部數(shù)據(jù)發(fā)送到同步服務(wù)器110。服務(wù)器試圖將這些數(shù)據(jù)項與同步服務(wù)器110已知的那些項匹配。未能執(zhí)行正確的“身份匹配”可能給數(shù)據(jù)造成不期望的重復(fù)或合并。同步服務(wù)器110隨后用客戶端裝置130處缺失的數(shù)據(jù)項來作出響應(yīng)。復(fù)位同步模式被用來用服務(wù)器的數(shù)據(jù)把客戶端裝置130上的數(shù)據(jù)類的全部數(shù)據(jù)復(fù)位。當數(shù)據(jù)結(jié)構(gòu)已被推送到客戶端裝置130時,或者在服務(wù)器110或客戶端裝置130確定該裝置的本地數(shù)據(jù)受到破壞的情況下,可以發(fā)生這種情況??蛻舳搜b置130不發(fā)送數(shù)據(jù),服務(wù)器用針對該數(shù)據(jù)類的完整數(shù)據(jù)結(jié)構(gòu)來作出響應(yīng)??焖偻侥J绞亲罡咝У哪J剑绕涫窃谑褂糜邢迬挼倪B接的時候??蛻舳搜b置130僅發(fā)送自從與同步服務(wù)器110上次同步以來改變過的那些數(shù)據(jù)。同步服務(wù)器110僅用客戶端裝置130外部已改變的那些數(shù)據(jù)來作出響應(yīng)。同步服務(wù)器110是可擴展的解決方案,以給多個web客戶端120和客戶端裝置130提供對于被同步到中心數(shù)據(jù)倉庫142的數(shù)據(jù)的讀/寫訪問。同步服務(wù)器110對于針對多個web客戶端120和客戶端裝置130的同步交易進行管理,以更新同步數(shù)據(jù)倉庫112中儲存的一個或多個數(shù)據(jù)記錄。同步服務(wù)器110對同步會話(session)進行處理,經(jīng)過更新的同步數(shù)據(jù)倉庫112被與通用服務(wù)器140所關(guān)聯(lián)的中心數(shù)據(jù)倉庫142相同步。在對中心數(shù)據(jù)倉庫142與同步數(shù)據(jù)倉庫112進行同步時,同步服務(wù)器110作為通用服務(wù)器140的另一個客戶端來工作。這樣,對于通用服務(wù)器140而言,同步服務(wù)器110表現(xiàn)得如同計算機客戶端150之ο為了允許高效的、可擴展的同步服務(wù),同步服務(wù)器110根據(jù)無需結(jié)構(gòu)化查詢語言(SQL)的嵌入式B-Tree來實現(xiàn)同步數(shù)據(jù)倉庫112。同步數(shù)據(jù)倉庫112是嵌入式數(shù)據(jù)儲存裝置,例如BerkeleyDB,它包括同步服務(wù)器110上的除了實際數(shù)據(jù)庫之外的任何內(nèi)容。BerkeleyDBJavaEdition("BerkeleyDBJE,,或"BDB邛,,或“邛,,)是純Java數(shù)據(jù)庫(來自O(shè)racleCorporation,RedwoodCity,CA)。BerkeleyDB提供了高度可擴展、高性能、事務(wù)型的B-Tree數(shù)據(jù)庫。實現(xiàn)方式不限于BerkeleyDB0在一些實現(xiàn)方式中,也可以使用其他持久性(persistence)機制(例如Hibernate)。Hibernate是用于Java和·Net的對象/關(guān)系型持久性和查詢服務(wù)。OracleBerkeleyDB是開源可嵌入式數(shù)據(jù)庫引擎,給開發(fā)人員提供了快速、可靠和本地的數(shù)據(jù)持久性。作為嵌入式數(shù)據(jù)庫,BerkeleyDB庫直接鏈接到web客戶端應(yīng)用120中。在與BerkeleyDB鏈接之后,web客戶端應(yīng)用120可以在本地通過簡單的函數(shù)調(diào)用來訪問數(shù)據(jù),從而消除了客戶端-服務(wù)器架構(gòu)中通常使用的基于網(wǎng)絡(luò)的協(xié)議的性能損失。類似地,由于BerkeleyDB是非SQL數(shù)據(jù)庫,所以應(yīng)用開發(fā)人員可以定義具體的數(shù)據(jù)訪問模式。考慮到由BerkeleyDB提供的控制和選項數(shù)量,應(yīng)用開發(fā)人員能夠獲得對于數(shù)據(jù)本身的更優(yōu)化、可預(yù)計的訪問。本地同步數(shù)據(jù)倉庫112為非關(guān)系型,沒有SQL的開銷。另外,本地同步數(shù)據(jù)倉庫112是進程內(nèi)(in-process)型,沒有客戶端-服務(wù)器的開銷。本地同步數(shù)據(jù)倉庫112可以提供對于數(shù)據(jù)的方便收集式接口。此外,使每個用戶具有單獨的庫房還減小了風險。同步服務(wù)器110對于二進制數(shù)據(jù)屬性(例如服務(wù)器110定義的格局中由“數(shù)據(jù)”表示的特性)具有特殊情形處理?!癱om.apple.Contacts”格局中的示例是“com.apple,contacts.Contact”實體上的“圖像”特性。盡管持久性庫房能夠?qū)@些數(shù)據(jù)類型進行序列化(serialize)和儲存,但是使用更緊湊的數(shù)據(jù)類型將它們與屬性分開儲存可能更為高效。同步服務(wù)器110可以在“Blob”目錄中儲存二進制大對象(BLOB),并通過數(shù)據(jù)類和記錄ID來組織它們。BLOB是數(shù)據(jù)庫管理系統(tǒng)中以單一實體的形式儲存的二進制數(shù)據(jù)的集合。BLOB包括圖像、音頻或其它多媒體對象。在一些實例中,二進制可執(zhí)行代碼可以以blob的形式儲存。對于BLOB的引用被轉(zhuǎn)換成文件引用URI。為了實現(xiàn)這種情況,同步服務(wù)器110實現(xiàn)攔截器,該攔截器可以用于在來自數(shù)據(jù)提供者的任意數(shù)據(jù)持久留存在中心數(shù)據(jù)倉庫142或同步數(shù)據(jù)倉庫112中之前對其進行攔截和轉(zhuǎn)變(mutate)。攔截器可以將BLOB數(shù)據(jù)轉(zhuǎn)換成文件引用,并對實際BLOB數(shù)據(jù)進行序列化。這使得同步服務(wù)器110能夠在執(zhí)行同步的處理中盡早將大塊數(shù)據(jù)從存儲器中移除,從而改善可擴展性。它還允許同步服務(wù)器110與對于中心數(shù)據(jù)庫142和/或同步服務(wù)器112具有直接訪問能力的其他后端應(yīng)用共享這些BLOB引用,從而在這些處理需要取得數(shù)據(jù)時進一步改善了同步服務(wù)器的性能。此外,儲存到中心數(shù)據(jù)庫142的BLOB引用可以由服務(wù)器處理140和110以直接只讀訪問的形式通過相應(yīng)的網(wǎng)絡(luò)160、190和180提供給客戶端150、120和130。這使得同步服務(wù)器110能夠與其他服務(wù)器處理分擔對于訪問大塊數(shù)據(jù)的責任。BLOB可以以外部文件的形式儲存。同步服務(wù)器110依賴于用于代表同步數(shù)據(jù)倉庫142的最小限度的格局,消除了對于每個同步會話維持記錄快照的需要。例如,同步服務(wù)器110使用數(shù)據(jù)類,這些數(shù)據(jù)類包括一組相互關(guān)聯(lián)的實體。同步服務(wù)器110通過使用文本或二進制的屬性列表文件(Plist)來支持各種數(shù)據(jù)類。在MacOSXCocoa、NeXTSTEP和GNUst印編程框架中,plist例如是儲存序列化對象的文件。Plist常常用來儲存用戶的設(shè)定,類似于MicrosoftWindows的Windows注冊表的功能。屬性列表文件也被用來儲存與組件(bundle)和應(yīng)用有關(guān)的信息。用標準的操作系統(tǒng)(OS)特性(例如NSPropertyListSerialization類)容易產(chǎn)生和解析plist。例如,同步服務(wù)器110可以使用MacOS10plist并產(chǎn)生用于數(shù)據(jù)類的內(nèi)部對象模型,以理解如何對每個數(shù)據(jù)類進行支持和同步。這允許同步服務(wù)器110在不需要同步服務(wù)器本身發(fā)生改變的情況下,通過修改服務(wù)器的配置來動態(tài)地支持更多的數(shù)據(jù)類。圖2示出了同步服務(wù)器110支持的示例性數(shù)據(jù)模型。同步服務(wù)器110為每個數(shù)據(jù)類產(chǎn)生對象數(shù)據(jù)模型,其代表實體記錄、屬性、記錄改變(添加、修改、刪除)、屬性改變(設(shè)定、清除)和id映射。同步服務(wù)器110既以結(jié)構(gòu)化數(shù)據(jù)庫房的形式又以SyncEngine的形式呈現(xiàn)其自身,同步服務(wù)器110的內(nèi)部持久性模型對下列要求進行平衡(1)真值(truth)訪問(任何數(shù)據(jù)類和/或?qū)嶓w的當前版本)210;(2)歷史管理(沿有關(guān)事件的時間線的字段級差異)220;C3)客戶端狀態(tài)(歷史中最后一次得知的位置、同步模式、客戶端類型)230以及(4)客戶端裝置130的裝置細節(jié)M0。在同步服務(wù)器的格局中,這些要求中的每一者在邏輯上是分開的。真值數(shù)據(jù)210包含用于用戶的完整的當前數(shù)據(jù)集。真值數(shù)據(jù)210儲存在中心數(shù)據(jù)倉庫140中。對于希望簡單地得到當前數(shù)據(jù)的客戶端,真值數(shù)據(jù)210使得能夠用最小化的SyncEngine邏輯進行迅速的數(shù)據(jù)訪問。真值數(shù)據(jù)210可以包括一個或多個數(shù)據(jù)記錄212,這些數(shù)據(jù)記錄212包括各種實體,例如全球唯一標識符(⑶ID)、實體名稱(entityname),dataclassName、deleted、creationTime、modificationTime等。每個記錄212與各禾中參數(shù)214(例如名稱和值)相關(guān)聯(lián)。真值歷史220呈現(xiàn)事件的有序時間線(timeline)(根據(jù)History,id排序)。真值歷史220包括具有各種實體的一個或多個歷史數(shù)據(jù)222,這些實體包括ID、recordld,dataclassName>clientId>^|M(type)>timestamp>synthetic等。222與一個或多個歷史屬性224(例如動作和名稱)相關(guān)聯(lián)。真值歷史還包括沖突數(shù)據(jù)226。為了避免冗余,實際記錄值并不儲存在真值歷史中。例如,同步服務(wù)器110不是版本控制(versioning)系統(tǒng)。相反,同步服務(wù)器110儲存與下述內(nèi)容有關(guān)的信息什么記錄和屬性發(fā)生了改變(例如FLD);是否添加、修改或刪除了記錄;哪個客戶端進行了這種改變。沖突在邏輯上也落在這個范圍內(nèi)。但是,沖突可以不在真值中持續(xù)??蛻舳藸顟B(tài)230可以包括用于使給定的客戶端以及每個數(shù)據(jù)類的同步狀態(tài)維持存在的各種實體??蛻舳藸顟B(tài)實體包括GUID、名稱、帳戶(account)、類型、狀態(tài)、isEnabled、isRegisteredWithBridgeStore、firstSyncDate、lastSyncDate、buildversion、創(chuàng)建時間、修改時間、deviceinfor或activation。數(shù)據(jù)類232與各個客戶端相關(guān)聯(lián)。這些數(shù)據(jù)類包括名稱、anchor、fastSync、lastSync、lastreset、lastSyncState、hash、lastSyncHistory>enabled、倉1j建時1](creationtime)、pendingupdates、pendingldmapping禾口deviceDataclassState。另外,每個數(shù)據(jù)類與syncAnchor236數(shù)據(jù)類相關(guān)聯(lián)。SyncAnchor信息可以包括generation、historyid、syncMode、syncDirection禾口changelogVersion。數(shù)據(jù)類可以與dataclasshistory238才目datacliisshistory238bTL^,^recordId>^IM>timestamp。此外,每個數(shù)據(jù)類還可以與IdMapping239相關(guān)聯(lián)。裝置狀態(tài)240可以包括Devicehfo242和ActivationM4,它們與客戶端數(shù)據(jù)232有關(guān)。Activation244可以包括msisdn、carrier禾口notifyelements。另夕卜,裝置狀態(tài)240可以包括DeviceDataClassMate246,DeviceDataClassState246包括各種實體(包括名稱、anchors、flter、creationTime禾口modificationTime)。裝置或客戶端狀態(tài)240可以包括RecordidMap248,RecordidMap248包括各種數(shù)據(jù)實體(包括LUID、GUID、dataclass:clientID、創(chuàng)建時間和修改時間。DeviceDataclassMate246可以包括DeviceAnchorType250和過濾器信息(例如map和enabled)。這里的這些實體由OTA客戶端130專門使用。受信客戶端同步服務(wù)器110被配置成既支持受信客戶端又支持非受信客戶端。在與受信客戶端接口時,同步服務(wù)器可以跳過某些完整性檢查,這些完整性檢查對于非受信客戶端而言可能是必需的。受信客戶端是滿足與同步服務(wù)器110之間的某種契約的客戶端。例如,受信客戶端支持將同步服務(wù)器ID用作固有IDfcativeID)。這樣,受信客戶端的局部唯一標識符(LUID)被由同步服務(wù)器110產(chǎn)生的通用唯一標識符(UUID)代替。另外,受信客戶端支持同步服務(wù)器110的全部實體和屬性。而且,受信客戶端保證根據(jù)同步服務(wù)器110的格局來維持所注入的改變。同步服務(wù)器110所支持的格局或數(shù)據(jù)類包括聯(lián)系人、日歷和書簽。在與非受信客戶端接口時,同步服務(wù)器可以試圖處理由這些非受信客戶端所發(fā)送的改變。同步服務(wù)器110可以查看由非受信客戶端所請求的數(shù)據(jù)改變的結(jié)構(gòu),并決定所請求的數(shù)據(jù)改變是否合法(與同步服務(wù)器110的要求相符)。另外,同步服務(wù)器110還可以決定所請求的記錄改變對于所識別的格局而言是否有意義。例如,同步服務(wù)器可以確定這些非受信客戶端是否在試圖添加不具有所需屬性的記錄。同步服務(wù)器可以確定這些非受信客戶端是否在通過設(shè)定與不存在的有關(guān)ID之間的關(guān)系而嘗試修改記錄。當同步服務(wù)器110檢測到非法的數(shù)據(jù)改變請求時,同步服務(wù)器110對該改變進行標記。同步服務(wù)器110所不能改變的那些改變被拒絕。在一些實例中,某些非法的數(shù)據(jù)改變可以由同步服務(wù)器110修理(fix)并接受,而無需明確的客戶端干預(yù)。例如,下述的非法數(shù)據(jù)改變可以由同步服務(wù)器110修理??紤]由非受信客戶端發(fā)送的添加聯(lián)系人和電話號碼的請求。該聯(lián)系人與電話號碼之間存在“對多(to-many)”關(guān)聯(lián)性。該聯(lián)系人條目例如可以被指派給多個電話號碼。對于首要電話號碼,由于聯(lián)系人具有一個首要電話號碼,所以關(guān)聯(lián)性是一對一的。當非受信客戶端添加聯(lián)系人和電話號碼時,該電話號碼被鏈接到該聯(lián)系人。該電話號碼自身具有指向相關(guān)聯(lián)的聯(lián)系人的聯(lián)系人關(guān)聯(lián)性或反向指針(backpointer)。這樣,當給聯(lián)系人添加電話號碼時,應(yīng)當指明這些關(guān)系性。這些關(guān)聯(lián)性中的許多具有逆(inverse)。聯(lián)系人數(shù)據(jù)類中電話號碼的關(guān)系對于電話號碼實體(這是聯(lián)系人關(guān)聯(lián)性)具有逆關(guān)聯(lián)性。例如,“contacts.phone_nUmbers”可以表示一種關(guān)聯(lián)性,該關(guān)聯(lián)性的逆關(guān)聯(lián)性可以表示為“phone_number_entity.contact_property”逆關(guān)聯(lián)性。當這些關(guān)聯(lián)性中的一項或多項缺失或者不正確時,同步服務(wù)器110可以校正缺失的或不正確的關(guān)聯(lián)性,例如逆關(guān)聯(lián)性。在另一示例中,聯(lián)系人實體(例如R)o)可以引用電話號碼實體“Bar”。在非受信客戶端中,電話號碼實體Bar的聯(lián)系人反向指針可能不正確地反向引用到聯(lián)系人實體Baz。同步服務(wù)器110可以校正這種不正確的反向指針。受信客戶端不會產(chǎn)生這種不正確的關(guān)聯(lián)性。因此,在同步服務(wù)器110正與非受信客戶端接口、并且用于逆關(guān)聯(lián)性的反向指針未被設(shè)定時,同步服務(wù)器110考慮這種情況并確定這不是合法的。另外,同步服務(wù)器110可以得知能夠做什么來修理這種錯誤。同步服務(wù)器110將與聯(lián)系人實體的電話號碼有關(guān)的屬性集與指向引用該電話號碼的聯(lián)系人實體的反向指針進行合成。這樣,對于非受信客戶端,同步服務(wù)器110可以通過對同步服務(wù)器110可接受的屬性改變進行合成來提供幫助。另外,同步服務(wù)器110還可以向非受信客戶端通知已經(jīng)根據(jù)同步服務(wù)器的推斷執(zhí)行了這種修理。同步服務(wù)器110可以根據(jù)推理來確定客戶端是否是受信的。某些客戶端由于使用特定的協(xié)議而被識別或檢測為受信的。例如,軟件開發(fā)工具包(SDK)客戶端120由于使用基于SDK的協(xié)議而受信。SDK是一組開發(fā)工具,其使得軟件工程師能夠針對某些軟件包、軟件框架、硬件平臺、計算機系統(tǒng)、視頻游戲控制臺、操作系統(tǒng)或類似的平臺而創(chuàng)建應(yīng)用。另外,SyncDAV客戶端150也是受信的。SyncDAV是基于WebDAV的有線協(xié)議,用于將來自計算機客戶端150(例如Mac)的改變儲存在通用服務(wù)器140(例如DotMac服務(wù)器)上。同步服務(wù)器110還可以動態(tài)地確定客戶端是否是受信客戶端。同步服務(wù)器110可以通過檢測當前同步的屬性來作出這種確定。例如,非受信客戶端可能已被更新(例如通過更新固件)而作為受信客戶端工作。那么在下一次同步時,同步服務(wù)器110就可以檢測到該客戶端是受信客戶端。另外,例如,同步服務(wù)器110還可以檢測該客戶端是否發(fā)送LUID或UUID。另外,同步服務(wù)器110還可以針對客戶端來檢測在裝置信息的客戶端定義中設(shè)定的標志。此外,同步服務(wù)器110還可以檢測該客戶端正在使用慢速同步模式,并從而檢測這些改變是RLD而不是FLD。另外,客戶端可以通過同步服務(wù)器客戶端SDK320來與服務(wù)器110進行接口,并從而表明與公開的SDK相符的那些客戶端是受信客戶端。在一些實現(xiàn)方式中,受信客戶端的庫可以被公開以設(shè)定可接受的受信客戶端的標準。每個被同步的數(shù)據(jù)具有通用唯一記錄ID即UUID。為了高效,同步服務(wù)器110可以使用Mac0SX上的Sym^ervices的UUID?;蛘撸?,客戶端裝置130上的應(yīng)用可以給數(shù)據(jù)使用其本地唯一ID(LUID),以提高本地數(shù)據(jù)庫房效率。服務(wù)器120允許客戶端裝置130(數(shù)據(jù)庫房)在需要時使用其自身的LUID來引用數(shù)據(jù)項。在此情況下,服務(wù)器120維護LUID對UUID的映射,以使客戶端裝置130能夠通過使用其自身的本地ID來透明地引用全局記錄。當針對數(shù)據(jù)類接受了“慢速”或“復(fù)位”同步模式時,服務(wù)器120重新建立新的映射同步服務(wù)器110為受信客戶端設(shè)定權(quán)威同步服務(wù)器UUID。通過為每個數(shù)據(jù)實體設(shè)定權(quán)威UUID,同步服務(wù)器110可以廢除LUID—全球唯一標識符(⑶ID)映射。對于非受信客戶端,同步服務(wù)器110根據(jù)需要維護LUID-GUID映射M8。LUID-GUID映射使得外部客戶端能夠通過客戶端自身的本地標識符來訪問數(shù)據(jù)實體。但是,這對于如何表示改變需要附加的登錄(bookke印ing)。通過要求受信客戶端(例如web應(yīng)用)支持同步服務(wù)器的UUID,可以避免高開銷的LUID-GUID映射。這例如能夠減少同步服務(wù)器110的處理工作。當客戶端正在添加的數(shù)據(jù)項已存在于同步數(shù)據(jù)倉庫112中時,同步服務(wù)器110可以執(zhí)行身份匹配。當檢測到身份匹配時,同步服務(wù)器110向客戶端通知應(yīng)當通過同步服務(wù)器110的新UUID來引用該數(shù)據(jù)項。例如,考慮試圖對類似數(shù)據(jù)集(例如一組地址聯(lián)系人)進行同步的兩個Mac。這些是使用SyncDAV協(xié)議的受信客戶端。每個Mac會將其自身的UUID指派給這些數(shù)據(jù)實體。當?shù)谝籑ac與通用服務(wù)器140進行同步時,根據(jù)身份匹配,來自該第一Mac的UUID被接收,因為該數(shù)據(jù)實體尚不存在。這個同步被通知給同步服務(wù)器110,因而同步服務(wù)器110執(zhí)行SyncDAV同步,以獲得所添加的、由第一Mac指派了UUID的數(shù)據(jù)實體。然后,當?shù)诙﨧ac對同一數(shù)據(jù)集進行同步并通過慢速同步而提供其自身的UUID時,同步服務(wù)器110不接受該新的UUID,并指派來自第一Mac的其他uuid值。字段級差異化(fieldleveldifferencing)與記錄級(recordlevel)差異化數(shù)據(jù)中的差異可以以各種粒度(granularity)來受到同步。在交換同步數(shù)據(jù)時,對于記錄級差異化(RLD),客戶端裝置130和web客戶端120可以為每個改變的記錄發(fā)送完整數(shù)據(jù)?;蛘撸瑢τ谧侄渭壊町惢?FLD),可以只發(fā)送各個改變的記錄的那些改變的字段。FLD可以比RLD優(yōu)選,尤其是當數(shù)據(jù)記錄包括許多個字段或者包含大量數(shù)據(jù)(例如聯(lián)系人數(shù)據(jù)類中的圖像)的時候。服務(wù)器110可以動態(tài)地既支持從客戶端裝置130接收的數(shù)據(jù)的RLD表示形式又支持其FLD表示形式。改變的數(shù)據(jù)表示形式表明客戶端裝置130和/或web客戶端120對于給定的數(shù)據(jù)類正在使用RLD還是FLD。當維護元信息(metainformation)以支持FLD的復(fù)雜性并不合理時,這給客戶端裝置數(shù)據(jù)庫房實現(xiàn)方式提供了最大的靈活性。當接收RLD改變時,為了處理、儲存和通信的效率,同步服務(wù)器110在內(nèi)部將這些改變轉(zhuǎn)換成FLD格式。同步服務(wù)器110期望RLD客戶端裝置130發(fā)送完整的記錄。受客戶端裝置130支持、并且從客戶端裝置的數(shù)據(jù)記錄中缺失的數(shù)據(jù)字段被假定已被客戶端裝置130清理/刪除。但是,可以提供一種機制,使得客戶端裝置130能夠表明某些數(shù)據(jù)字段異常值未改變,而不發(fā)送這些值。RLD客戶端可以發(fā)送整個數(shù)據(jù)集,其中具有用以表明所改變的數(shù)據(jù)實體的標志。FLD客戶端只發(fā)送所改變的數(shù)據(jù)實體。在某些實現(xiàn)方式中,受信客戶端可以只發(fā)送FLD改變。使用FLD減少了帶寬使用率,以及對于中心數(shù)據(jù)倉庫142具有訪問能力的其他客戶端和服務(wù)器的不必要的更新。沖突解決當兩個或更多個客戶端試圖改變相同的數(shù)據(jù)實體和/或?qū)傩詴r,可能存在沖突。例如,當兩個客戶端試圖改變聯(lián)系人條目的姓時,同步服務(wù)器110試著自動解決該沖突。在確定要接受哪個改變時,可以使用時間排序。同步服務(wù)器110試圖確定最近的改變,并給該改變分配較高的優(yōu)先級。但是,時間排序可能是棘手的。例如,同步服務(wù)器10可能不能信任客戶端的內(nèi)部時鐘,所以使用時間戳是有風險的。另外,時間排序可能受到各個客戶端所用的網(wǎng)絡(luò)的質(zhì)量的影響??偟膩碚f,在檢測到?jīng)_突時,同步服務(wù)器110給發(fā)起當前同步的那個客戶端分配較高的優(yōu)先級。在某些情形中,某些改變(即使是更近的)也可以被認為較弱,或者應(yīng)當被賦予比更舊的改變更低的優(yōu)先級。例如,改變的類型,RLD或FLD,可以對哪個改變?nèi)〉幂^高優(yōu)先級有影響。首先,同步服務(wù)器110檢測來自RLD客戶端的聯(lián)系人改變,該聯(lián)系人具有名和姓。然后,檢測到來自FLD客戶端的、添加中間名的改變。當該RLD客戶端發(fā)送新的電話號碼時,RLD客戶端尚未看到所添加的中間名。因此,盡管這是最近的同步,但空的中間名沒有被檢測為清理或刪除,因為同步服務(wù)器110明白該改變來自RLD客戶端。在這種實例中,在RLD向FLD的推斷過程中,同步服務(wù)器110不刪除中間名。因此,同步服務(wù)器110所合成的改變(所推斷的清理)即使更近,也被認為是較弱的改變。雖然用戶知道用戶輸入這些改變的順序,但是該順序?qū)τ谕椒?wù)器110可能并不很明顯。將中心數(shù)據(jù)倉庫與同步數(shù)據(jù)倉庫進行同步SyncDAV改變?nèi)罩臼且恍┪募?,這些文件表明一組記錄改變。單一的記錄改變涉及數(shù)據(jù)的一條記錄,并表示三種操作之一(1)添加,(修改,或C3)刪除。每個修改改變具有屬性改變,這些屬性改變包括屬性名稱、屬性值、以及動作。另外,動作可以是設(shè)定或清除。無論客戶端何時被與同步服務(wù)器110同步,改變?nèi)罩径急簧?。所生成的改變?nèi)罩景ㄗ钚碌挠涗浉淖円约邦^部(header)。另外,所生成的改變?nèi)罩臼艿綁嚎s。例如,在MacOS10Cocoa類中,稱為NSArchiver的類被實現(xiàn),以取得對象的對象圖表,并將其序列化到存儲器或文件中。為了減小空間,對于重新發(fā)生的對象執(zhí)行游程符號化(rim-lengthtokenization)。這樣,每個對象被編碼一次,每個經(jīng)過編碼的對象可以被稱為其符號(token)0符號可以包括值,所述值包括數(shù)字。改變?nèi)罩究梢韵喈攺?fù)雜,并可以不是開放格式。NSArchiver在Java中被再次實現(xiàn),以使同步服務(wù)器客戶端SDK庫320客戶端能夠理解Cocoa類,例如NSArray和NSMutableArray;NSDictionary禾口NSMutableDictionary;NSSet禾口NSMutableSet;NSData禾口NSMutableData;NSDate禾口NSCalendarDate;NSTimeZone禾口NSLocaltimeZone;NSColor;NSURL等。同步服務(wù)器110可以將這些類和存檔鏈接讀取到通用服務(wù)器140(例如MacOS10服務(wù)器)。這些改變?nèi)罩颈挥脕碓谕椒?wù)器110與通用服務(wù)器140或網(wǎng)絡(luò)儲存裝置(例如iDisk)之間提供橋梁。這些改變?nèi)罩臼轻槍哂衅渥陨黻P(guān)系完整性的數(shù)據(jù)類的序列化改變集。這些改變?nèi)罩静灰蒙胁淮嬖诘膶嶓w。同步服務(wù)器100被配置成讀取這些改變?nèi)罩?,并在中心?shù)據(jù)倉庫142(例如SyncDAV數(shù)據(jù)庫房)與客戶端裝置130(例如iPhones)和web客戶端120(例如web應(yīng)用)之間作為橋梁。改變?nèi)罩颈淮械卮鎯Σ⑶沂羌有缘?additive)。通過對一系列改變?nèi)罩具M行處理,同步服務(wù)器110處理一系列事務(wù)。這樣,當同步服務(wù)器110完成對某個數(shù)目的改變?nèi)罩镜奶幚頃r,同步服務(wù)器110可以獲取中心數(shù)據(jù)倉庫的版本。當同步服務(wù)器110處理全部這些改變?nèi)罩緯r,同步服務(wù)器可以獲取中心數(shù)據(jù)倉庫142的當前版本。同步服務(wù)器110對這些改變?nèi)罩具M行序列化并與中心數(shù)據(jù)倉庫142進行同步。在這種處理過程中,同步服務(wù)器Iio被呈現(xiàn)給通用服務(wù)器140(例如SyncDAV服務(wù)器),就像另一個SyncDAV客戶端150對于SyncDAV服務(wù)器那樣。這樣,對于SyncDAV服務(wù)器而言,同步服務(wù)器110例如表現(xiàn)得如同另一個Mac客戶端。SyncDAV協(xié)議被用于通過WfebDAV基原對同步語義進行分層。WebDAV支持獲取(get)、放入(put)、刪除和鎖定操作。這些是用于WebDAV服務(wù)器(例如iDisk)的標準功能。作為W^ebDAV服務(wù)器而工作的通用服務(wù)器140可以在例如兩個Mac之間對SyncDAV改變進行同步。當與中心數(shù)據(jù)倉庫142進行同步時,在與同步的數(shù)據(jù)類和客戶端相關(guān)聯(lián)的WebDAV資源上設(shè)置鎖。這有效地防止了其他客戶端在該同步操作過程中對同一數(shù)據(jù)類進行同步。這樣,SyncDAV協(xié)議可能引起與序列化之間的各種競爭。同步服務(wù)器110允許對中心數(shù)據(jù)倉庫142進行迅速的訪問。這樣,同步服務(wù)器110的那些客戶端不必知道同步。同步服務(wù)器110將這些客戶端像單獨的數(shù)據(jù)庫房那樣對待。另外,同步服務(wù)器110從SyncDAV庫房(中心數(shù)據(jù)倉庫142)斷開。為了促進快速和高效的同步,同步服務(wù)器110不能承擔在提供用于web應(yīng)用客戶端120的數(shù)據(jù)之前等待客戶端完成同步。這樣,實現(xiàn)了用于服務(wù)器110的本地同步數(shù)據(jù)倉庫112(例如Berkeley數(shù)據(jù)庫),它能夠作為中心數(shù)據(jù)倉庫142(SyncDAV數(shù)據(jù)庫房)的備份。為了使兩個數(shù)據(jù)倉庫(同步數(shù)據(jù)倉庫112和中心數(shù)據(jù)倉庫14保持同步,產(chǎn)生了橋客戶端。在SyncDAV中,每個同步客戶端必須在SyncDAV數(shù)據(jù)庫房(中心數(shù)據(jù)倉庫142)中有表示形式。由于同步服務(wù)器110表現(xiàn)得如同SyncDAV客戶端150—樣,所以同步服務(wù)器110創(chuàng)建了這些表示形式之一。這樣,對于通用服務(wù)器140(SyncDAV服務(wù)器),同步服務(wù)器看起來類似于另一個Mac。同步服務(wù)器110與中心數(shù)據(jù)倉庫142執(zhí)行無縫動態(tài)同步,以避免將任何其他客戶端鎖在外面。例如,客戶端裝置130Hf^niPhone)可能正在與同步服務(wù)器110更新聯(lián)系人。同時,另一客戶端(例如Mac)可能正在與通用服務(wù)器140(SyncDAV服務(wù)器)執(zhí)行對于相同聯(lián)系人的所計劃的同步。中心數(shù)據(jù)倉庫142(SyncDAV數(shù)據(jù)庫房)可以由該Mac鎖定,并且同步服務(wù)器110注意到該鎖定。同步服務(wù)器110不阻止來自iPhone的改變進入中心數(shù)據(jù)倉庫142。由于同步服務(wù)器110包括內(nèi)部同步數(shù)據(jù)倉庫112,所以同步服務(wù)器110更新其內(nèi)部同步數(shù)據(jù)倉庫112。此后,當與Mac的同步完成時,同步服務(wù)器110接收由后端處理提供的通知,該通知表明中心數(shù)據(jù)倉庫142(SyncDAV服務(wù)器)具有需要更新的改變。這觸發(fā)了這兩個數(shù)據(jù)倉庫之間的同步,這兩個數(shù)據(jù)倉庫都取得這些改變。通過能夠向內(nèi)部同步數(shù)據(jù)倉庫112進行更新,可以避免當中心數(shù)據(jù)倉庫142(SyncDAV數(shù)據(jù)庫房)忙于對來自SyncDAV客戶端的改變進行同步時阻止客戶端裝置(例如iWione)。在一些實現(xiàn)方式中,當同步數(shù)據(jù)倉庫112受到破壞時,同步服務(wù)器110可以通過對SyncDAV改變?nèi)罩具M行序列化和處理,來從中心數(shù)據(jù)倉庫142恢復(fù)數(shù)據(jù)。中心數(shù)據(jù)倉庫142可以對同步數(shù)據(jù)倉庫112做同樣的事情。這樣,每個數(shù)據(jù)倉庫可以用作另一數(shù)據(jù)倉庫的備份。同步服務(wù)器110用傳輸協(xié)議(例如HTTP傳輸協(xié)議)與這些客戶端裝置130和這些web客戶端120相連,以完成安全數(shù)據(jù)連接。例如,通過該傳輸協(xié)議,同步服務(wù)器110使用空中傳送(over-the-air,OTA)同步協(xié)議來允許經(jīng)連接的客戶端裝置130與同步服務(wù)器110之間的數(shù)據(jù)同步。所同步的數(shù)據(jù)可以包括各種數(shù)據(jù)類,例如聯(lián)系人(例如地址和電話號碼)、日歷等。數(shù)據(jù)同步可以通過網(wǎng)絡(luò)180來執(zhí)行。共同在審的美國專利申請No.—/—(題為“數(shù)據(jù)同步協(xié)議,代理人卷號No.18814-104001)中描述了同步服務(wù)器110支持的示例性O(shè)TA同步協(xié)議和格局,該申請的全部內(nèi)容通過引用方式結(jié)合于此,作為本說明書的一部分。通過該傳輸協(xié)議,同步服務(wù)器110可以用同步服務(wù)器客戶端SDK庫320來與web客戶端120同步。在一種實現(xiàn)方式中,同步服務(wù)器客戶端SDK庫320可以被實現(xiàn)為使用Java平臺的jar文件。例如,同步服務(wù)器110可以實現(xiàn)同步服務(wù)器客戶端SDK庫320來確保web客戶端120表現(xiàn)得如同完全支持同步服務(wù)器的格局和數(shù)據(jù)類的受信客戶端。同步服務(wù)器客戶端SDK庫320可以被實現(xiàn)來執(zhí)行全部的關(guān)系完整性檢查,在web客戶端120上產(chǎn)生要由同步服務(wù)器110接受的UUID。同步服務(wù)器客戶端SDK庫320可以對設(shè)定這些關(guān)聯(lián)性進行處理,并確保其向同步服務(wù)器110傳輸?shù)挠涗浥c將該記錄傳輸?shù)酵椒?wù)器110之前相同。另外,同步服務(wù)器客戶端SDK庫320還處理異常,例如在同步服務(wù)器那方處理的數(shù)據(jù)倉庫復(fù)位異常。當客戶端裝置130推送整個數(shù)據(jù)集時,以及隨后當web客戶端120試圖更新該數(shù)據(jù)集時,web客戶端120接收異常消息,該消息表示該web客戶端必須在客戶端裝置130能夠發(fā)送該更新之前從中心數(shù)據(jù)倉庫重新裝載該數(shù)據(jù)集。由于web客戶端120被檢測為受信客戶端,所以關(guān)系完整性檢查從同步服務(wù)器110卸載到同步服務(wù)器客戶端SDK庫320。另外,同步服務(wù)器客戶端SDK庫320保護web客戶端120不受同步服務(wù)器110的復(fù)雜性困擾。同步服務(wù)器客戶端SDK庫320實現(xiàn)同步服務(wù)器格局的完整的對象模型。在一些實現(xiàn)方式中,用于每個數(shù)據(jù)類的Java類被生成。例如生成用于聯(lián)系人的Java類、以及用于e-mail地址的Java類。然后,同步服務(wù)器SDK庫320設(shè)定email地址與聯(lián)系人之間的關(guān)系。當web客戶端120要求同步操作時,同步服務(wù)器客戶端SDK庫320將這些改變推向同步服務(wù)器110。同步服務(wù)器客戶端SDK庫320解對于同步服務(wù)器110格局所需的屬性和關(guān)系,并保證同步服務(wù)器客戶端SDK庫320的用戶遵循這些所需的屬性和關(guān)系。當客戶端試圖提交包含壞數(shù)據(jù)(例如在同步服務(wù)器格局之外)的改變時,同步服務(wù)器SDK庫320向用戶發(fā)送運行時錯誤(runtimeerror)。這樣,在該格局中實施校正的責任可以從同步服務(wù)器的CPU卸載。通常在web應(yīng)用中,同步服務(wù)器客戶端SDK庫320可以在另一個CPU上運行。通過允許每天至少1.5M個同步,同步服務(wù)器110可以改善后端可擴展性(scalability)和簡易性。另外,同步服務(wù)器110還支持對于同步服務(wù)器110的滴流同步(trickle-sync)改變。圖3的框圖示出用于同步服務(wù)器110的示例性應(yīng)用架構(gòu)。同步服務(wù)器110包括各種組件,這些組件運行本說明書中所述的各種功能。例如,同步服務(wù)器110可以包括JavaNSArchivers組件302、通知機構(gòu)304、管理接口306、客戶端協(xié)議機構(gòu)308、差異化引擎(MinglerXonflicts)310、公共組件312、SyncDAV改變?nèi)罩窘M件314、格局(定義、有效性)組件316和真值(持久性)組件318。服務(wù)器110通過協(xié)議340連接到客戶端SDK320。SDAP協(xié)議340可以包括有線協(xié)議,例如同步服務(wù)器客戶端SDK。同步服務(wù)器客戶端SDK320是這樣的庫該庫通過同步服務(wù)器數(shù)據(jù)訪問協(xié)議(SDAP)提供對同步服務(wù)器的訪問,而不需要客戶端120具有專門的協(xié)議知識。SDAP340是用于訪問同步數(shù)據(jù)倉庫112并執(zhí)行同步的協(xié)議。SDAP由下述內(nèi)容組成用于同步數(shù)據(jù)倉庫112的數(shù)據(jù)和改變的XML格局;HTTP協(xié)議語義,這些語義定義了用于數(shù)據(jù)類、記錄和屬性的URL方案;用于HEAD、GET、PUT和DELETE的語義;定制的X-header,用于交換專用于同步的數(shù)據(jù),例如客戶端id和同步錨(anchor)。18SDAP340使得客戶端120能夠與同步服務(wù)器110進行接口(akaMetropolis)。同步服務(wù)器Iio支持基本的和摘要的(digest)認證。web客戶端120與同步服務(wù)器110之間的通信不被加密,因為web客戶端(例如web應(yīng)用)120與同步服務(wù)器110都在內(nèi)部部署在服務(wù)器那方。SDAP可以支持基本認證。同步服務(wù)器110或者單獨的網(wǎng)關(guān)服務(wù)器可以包括認證和會話處理,以支持與空中傳送(OTA)客戶端130進行同步。另外,SDAP為注冊設(shè)備以及針對各個數(shù)據(jù)類許用/禁用同步提供便利。SDAP使得web客戶端120能夠與web服務(wù)器110同步并訪問同步數(shù)據(jù)倉庫112,而無需復(fù)雜的客戶端同步狀態(tài)機。SDAP允許對同步數(shù)據(jù)倉庫112和中心數(shù)據(jù)倉庫142中經(jīng)過同步的數(shù)據(jù)進行無狀態(tài)(stateless)訪問,其中,響應(yīng)時間目標在低于500毫秒的范圍。SDAP能夠代替各個服務(wù)器(例如DotMac服務(wù)器(Replicant,SFDE和WOA))之間任何現(xiàn)有的協(xié)議(例如SyncAPI)。另外,SDAP還允許同步各種數(shù)據(jù)類,包括聯(lián)系人、日歷和書簽。Apple擴展的示例性數(shù)據(jù)類包括“com.apple.Contacts”、"com.apple.Calendars”和“com.apple.Bookmarks”。此外,SDAP還使web應(yīng)用120和客戶端裝置130能夠與同步服務(wù)器110進行滴流同步。希望使用SDAP的客戶端應(yīng)用(例如web客戶端120)必須支持字段級改變,并將屬性全體保持為與API所發(fā)送的一樣。同步服務(wù)器客戶端SDK320可以是這樣的Java庫該庫通過SDAP提供對于同步服務(wù)器110的訪問,而無需專門的協(xié)議知識。在一些實現(xiàn)方式中,同步服務(wù)器客戶端SDK320可以使用其他語言和技術(shù)來實現(xiàn)。同步服務(wù)器客戶端SDK320提供用于主數(shù)據(jù)類(書簽、聯(lián)系人和日歷等)的對象模型,并使得客戶端能夠與同步服務(wù)器同步數(shù)據(jù)而不必具有它們自身的數(shù)據(jù)庫房。如上所述,為了改善服務(wù)器的可擴展性,SDK將保證實現(xiàn)關(guān)系完整性的任務(wù)從服務(wù)器卸載到客戶端(使之成為受信客戶端)并消除了服務(wù)器上對于LUID-GUID映射的需要。同步服務(wù)器客戶端SDK被.Mac聯(lián)系人和日歷面向web架構(gòu)(WOA)用來與同步服務(wù)器110進行同步。SDAP定義其自身的XML格局以描述同步數(shù)據(jù)倉庫112和同步操作,例如“記錄”和“屬性”的改變。用于SDAP的XML格局遵循同步服務(wù)器110的數(shù)據(jù)模型。例如,該XML格局可以代表實體記錄;屬性;記錄改變,例如添加、修改和刪除;屬性改變,例如設(shè)定和清除;id映射。同步服務(wù)器客戶端SDK320包括與同步服務(wù)器110的同步會話過程中可以使用的各種組件。同步服務(wù)器客戶端SDK320可以包括同步服務(wù)器110所定義的數(shù)據(jù)類或所支持的格局。這些數(shù)據(jù)類可以包括聯(lián)系人322、日歷324以及書簽326。這些數(shù)據(jù)類各自包括通過關(guān)系而組織的數(shù)據(jù)項。同步服務(wù)器客戶端SDK320還包括SDAP客戶端組件328、共用(XML、記錄、改變)組件330和實體庫房332。圖4的框圖示出了示例性的同步服務(wù)器系統(tǒng)架構(gòu)。該系統(tǒng)架構(gòu)包括一個或多個客戶端410和412,這些客戶端與通用服務(wù)器140進行接口,以在一個或多個同步會話中對一個或多個數(shù)據(jù)記錄進行同步。客戶端410、412可以包括計算機,例如運行Mac0SXTiger和Leopard的計算機。這些客戶端410和412可以是連接到一個或多個DotMae服務(wù)的DotMac客戶端??蛻舳?10和412可以通過網(wǎng)絡(luò)420而向通用服務(wù)器140進行HTTP連接。網(wǎng)絡(luò)設(shè)備414(例如路由器)管理至目的地的連接。通用服務(wù)器140可以包括SyncDAV服務(wù)器,該服務(wù)器提供在線儲存服務(wù)器,例如iDisk。通用服務(wù)器140連接到中心數(shù)據(jù)倉庫142,該倉庫作為最新和最完整的數(shù)據(jù)庫房而工作。當更新可用時,響應(yīng)于由客戶端410、412發(fā)送的改變,同步服務(wù)器110得到通知。然后,同步服務(wù)器110可以處理對于通用服務(wù)器140的同步會話,以接收這些更新。同步服務(wù)器110可以連接到其他的DotMac服務(wù)器416,以提供額外服務(wù)以及定義所支持的數(shù)據(jù)類和格局。例如,聯(lián)系人、日歷和書簽數(shù)據(jù)類可以被支持。此外,還可以提供單獨的服務(wù)器418和/或處理器來管理同步服務(wù)器110。圖^1、513、5(3、5(1、&、5廠58和511示出了用于對同步會話進行處理的示例性處500。在協(xié)商階段510中,同步服務(wù)器110從一個或多個客戶端120、130等接收(511)發(fā)起同步會話的請求。從這一個或多個客戶端120、130等接收的請求包括所需的數(shù)據(jù)類以及對于該數(shù)據(jù)類建議的同步模式。例如,操作移動設(shè)備(例如iPhone)的用戶可以在聯(lián)系人數(shù)據(jù)類中輸入新的名稱。響應(yīng)于所輸入的新的名稱,發(fā)起同步會話的請求可以從該客戶端向同步服務(wù)器31發(fā)送,以發(fā)起對于同步服務(wù)器110的同步會話。同步服務(wù)器110判定(512)所建議的同步模式是否可接受。當同步服務(wù)器110判定為所建議的同步模式不可接受時,同步服務(wù)器110將可接受的同步模式(慢速或快速)通知(51給請求發(fā)起同步會話的這一個或多個客戶端120、130。當同步服務(wù)器110判定為所建議的同步模式可接受時,同步服務(wù)器110向請求發(fā)起同步會話的客戶端通知(514)所建議的模式被接受。在聚集階段520,同步服務(wù)器110判定(521)是否有其他客戶端可以加入當前的同步任務(wù)。當前的同步任務(wù)可以包括對聯(lián)系人數(shù)據(jù)類進行同步。當有其他客戶端可用時,同步服務(wù)器110判定(52該用戶是否在中心數(shù)據(jù)倉庫142中具有數(shù)據(jù)并判定(52該數(shù)據(jù)是否未被鎖定。在未鎖定時,使用(524)橋客戶端來代(proxy)對于中心數(shù)據(jù)倉庫142中的用戶數(shù)據(jù)的訪問。例如,當操作iPhone的用戶在中心數(shù)據(jù)倉庫142(例如SyncDAV數(shù)據(jù)庫房)中具有聯(lián)系人數(shù)據(jù)類時。同步服務(wù)器110檢查中心數(shù)據(jù)倉庫中的聯(lián)系人數(shù)據(jù)類是否未被鎖定。當同步服務(wù)器110判定為聯(lián)系人數(shù)據(jù)類未被鎖定時,代理對中心數(shù)據(jù)倉庫的訪問的橋客戶端被添加到同步任務(wù),作為“對等者(peer)客戶端”。同步服務(wù)器110還判定(525)所聚集的對等者是否希望推送同步數(shù)據(jù)。當所聚集的對等者希望推送整個數(shù)據(jù)集的代替數(shù)據(jù)(例如對等者希望推送真值)時,用于發(fā)起者的同步模式被重新協(xié)商(5)。其他對等者將被要求接受“復(fù)位”同步模式。在拉取(pull)階段530,同步服務(wù)器110接收(531)來自所有客戶端120、130等的改變。同步服務(wù)器110基于服務(wù)器110所定義的格局來驗證(53所接收的改變。同步服務(wù)器110判定(533)這些客戶端是受信的還是非受信的。當檢測到某客戶端是非受信客戶端時,產(chǎn)生(534)綜合改變以實施該格局的關(guān)系完整性。另外,基于同步會話的一個或多個屬性,這一個或多個客戶端120、130被選擇性地識別(504)成受信客戶端和非受信客戶端中的一種。受信客戶端被配置成履行與同步服務(wù)器110的某種契約。例如,受信客戶端支持將同步服務(wù)器ID用作固有ID。這樣,受信客戶端的本地唯一標識符(LUID)被由同步服務(wù)器110產(chǎn)生的通用唯一標識符(UUID)代替。另外,受信客戶端支持由同步服務(wù)器110定義的全部實體、屬性和數(shù)據(jù)類。而且,受信客戶端可以確保根據(jù)正被同步的數(shù)據(jù)類的格局來維持所注入的改變。同步服務(wù)器所支持的格局或數(shù)據(jù)類例如包括聯(lián)系人、日歷和書簽。在混合(mingle)階段M0,同步服務(wù)器110對于每個客戶端執(zhí)行下述操作(1)判定(Ml)來自中心數(shù)據(jù)倉庫142的何種更新應(yīng)當去往各個客戶端;(2)判定(542)來自各個客戶端的哪些改變應(yīng)當被發(fā)送到對等者;以及C3)識別(來自中心數(shù)據(jù)倉庫142或?qū)Φ日叩哪男└淖儽舜藳_突。根據(jù)這種識別,產(chǎn)生644)—個或多個沖突。每個沖突包括沖突中的記錄id、客戶端1(發(fā)起者)、客戶端2(對等者或真值)、沖突屬性名稱的集合、公共屬性名稱的集合、“弱”屬性名稱的集合等。根據(jù)事件的相對時間排序,所產(chǎn)生的沖突得到解決(545)。例如,來自發(fā)起者的改變被看作“晚于”來自中心數(shù)據(jù)倉庫142的和來自所聚集的對等者的改變。所識別的“較晚的改變”通?!摆A得”該沖突(即,勝者的改變超越(override)敗者的改變)。當來自發(fā)起者的改變相對于來自所聚集的對等者的改變被看作“弱”時存在例外。當沖突得到解決時,來自勝者(例如獲勝的客戶端、獲勝的所聚集的對等者或獲勝的中心數(shù)據(jù)倉庫142等)的全部沖突屬性被應(yīng)用于該沖突的記錄。這種結(jié)果被應(yīng)用646)到中心數(shù)據(jù)倉庫和落敗的客戶端、落敗的所聚集的對等者等,作為更新。當兩個或更多個客戶端與同步服務(wù)器進行同步以更新或改變相同的記錄時,可能發(fā)生沖突。例如,同步服務(wù)器110可以處理與這些客戶端之一的用于更新一個或多個數(shù)據(jù)記錄的同步會話。同步服務(wù)器110可以處理與這些客戶端中的另外一者的用于另外更新這一個或多個數(shù)據(jù)記錄的另一同步會話。當在兩個同步會話之間檢測到一個或多個沖突時,通過向這些同步會話中最近的一者賦予優(yōu)先級,所識別的沖突可以得到解決(514)。這樣,由最近的同步會話所牽涉的客戶端發(fā)送的改變戰(zhàn)勝由另一客戶端所發(fā)送的較早的有沖突的改變。如上所述,這種一般規(guī)則可能存在例外。例如,在一些情況下,較早的FLD改變可以戰(zhàn)勝較近的RLD改變。當沒有檢測到?jīng)_突時,同步數(shù)據(jù)倉庫112被更新(512)以反映來自(一個或多個)同步會話的改變。另外,在沖突被解決之后,同步服務(wù)器112也可以被更新。在推送階段550,同步服務(wù)器110向所有的對等者發(fā)送(552)更新。在提交(commit)階段560,同步服務(wù)器查詢(56全部的對等者,以確定(564)這些對等者是否能夠提交更新和id映射。當檢測到這些對等者不能提交時,同步服務(wù)器110保存(566)更新和id映射表,以便所保存的更新和id映射表可以在該客戶端下次請求發(fā)起同步會話時被發(fā)送到客戶端。同步服務(wù)器110還用錨和下一同步模式來更新(568)對等者同步狀態(tài)。在通知階段570,同步服務(wù)器110判定(57改變是否已被施加到中心數(shù)據(jù)倉庫142。當檢測到這些改變已被施加到中心數(shù)據(jù)倉庫142時,同步服務(wù)器110向其他已知客戶端通知(574)所改變的數(shù)據(jù)類510向中心數(shù)據(jù)倉庫142施加了何種同步。圖6示出了用于執(zhí)行RLD向FLD轉(zhuǎn)換的示例性服務(wù)器處理。當處理與支持RLD的一個或多個客戶端120、130之間的所請求同步會話時,同步服務(wù)器110也可以執(zhí)行RLD向FLD的轉(zhuǎn)換。任何下述所支持屬性都應(yīng)被作為從客戶端120、130的清除(CLEAR)而對待所述屬性在中心數(shù)據(jù)倉庫142儲存的記錄中具有值但在客戶端RLD記錄改變中沒有設(shè)定(SET),并且在中心數(shù)據(jù)倉庫歷史中也沒有要作為更新而被發(fā)送到客戶端的針對所述屬性的SET操作。來自客戶端120、130的任何下述所支持屬性都可以從RLD記錄改變中除去所述屬性具有SET,具有與中心數(shù)據(jù)倉庫中的屬性的當前值相匹配的值。支持字段級差異化的客戶端120、130只對于要被更新的一個或多個數(shù)據(jù)記錄而發(fā)送改變的數(shù)據(jù)項。相反,支持記錄級差異化的客戶端120、130發(fā)送要被更新的一個或多個數(shù)據(jù)記錄中所包括的全部數(shù)據(jù)項。在圖6所示的示例中,同步服務(wù)器110識別(602)由客戶端描述plist(clientdescription.plist)所規(guī)定的、由客戶端120、130支持的格局屬性。對于作為修改(MODIFY)命令的每個RLD記錄(例如,我們可以忽略添加(ADD)或刪除(DELETE)),對于該客戶端針對該實體所支持的每個屬性,同步服務(wù)器110判定或識別(604)記錄的實體名稱(例如com.apple,contacts.Contact)。同步服務(wù)器110判定(606)該屬性是否從RLD記錄缺失。當同步服務(wù)器110檢測到該屬性從RLD記錄缺失時,同步服務(wù)器110對于該屬性產(chǎn)生(608)“弱”的CLEAR操作,并且中心數(shù)據(jù)倉庫142中沒有尚未作為更新而被發(fā)送(612)到客戶端120、130的SET。否則,如果該屬性在RLD記錄中是SET,并且該值與中心數(shù)據(jù)倉庫中對于該屬性的當前值匹配(610),則同步服務(wù)器110從RLD記錄除去(612)該屬性。否則,如果該屬性在RLD記錄中是SET,并且該值的哈希值與發(fā)送到該客戶端的最后已知哈希值匹配(614),則同步服務(wù)器110從RLD記錄除去(612)該屬性。另外,一旦同步會話對于數(shù)據(jù)記錄造成改變,則可以對于與這一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的全部改變而產(chǎn)生改變?nèi)罩?。改變?nèi)罩臼菍τ诮o定的同步會話過程中施加的格局數(shù)據(jù)類的全部改變的表示形式。改變?nèi)罩究梢员恍蛄谢苑e累這些改變。這樣,改變可以被漸漸更新,或者突然一起更新。使用橋客戶端,同步服務(wù)器110可以訪問中心數(shù)據(jù)倉庫142中儲存的數(shù)據(jù)。一旦被訪問,同步服務(wù)器110就可以使用改變?nèi)罩緛韺εc通用服務(wù)器140連接的中心數(shù)據(jù)倉庫142進行更新。這樣,所產(chǎn)生的改變?nèi)罩究梢员挥脕韺χ行臄?shù)據(jù)倉庫142(“真值”)進行更新。根據(jù)所處理的同步會話,同步服務(wù)器110可以判定這一個或多個客戶端120、130是支持(540)FLD還是RLD。例如,由客戶端表明的同步模式可以是慢速,并從而表明RLD。此外,改變的數(shù)據(jù)表示形式可以表明客戶端裝置130和/或web客戶端120對于給定的數(shù)據(jù)類正在使用FLD還是RLD。當這一個或多個客戶端被配置成支持記錄級差異化時,同步服務(wù)器110執(zhí)行RLD至FLD轉(zhuǎn)換(,以在這一個或多個數(shù)據(jù)記錄中識別所改變的數(shù)據(jù)項。同步服務(wù)器110可以將客戶端所發(fā)送的數(shù)據(jù)記錄與同步數(shù)據(jù)倉庫112進行比較,以識別已經(jīng)改變的數(shù)據(jù)記錄中的數(shù)據(jù)項。與同步數(shù)據(jù)倉庫112相同的那些數(shù)據(jù)項被丟棄。當同步服務(wù)器110判定為這些客戶端支持FLD時,由這些客戶端發(fā)送的數(shù)據(jù)記錄中的全部數(shù)據(jù)項被接受(544),作為改變的數(shù)據(jù)。這包括添加的、修改的和刪除的數(shù)據(jù)。另外,在檢測到一個或多個客戶端被識別為非受信客戶端時,在與所述非受信客戶端相關(guān)聯(lián)的同步會話中,根據(jù)由服務(wù)器針對與所述非受信客戶端相關(guān)聯(lián)的同步會話中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局,可以檢測到一個或多個差別。這份說明書中描述的主題和功能性操作的實施例可以實現(xiàn)為數(shù)字電路的形式,或者計算機軟件、固件或硬件的形式,或者它們中的一項或多項的結(jié)合的形式,這些軟件、固件或硬件包含這份說明書中所公開的結(jié)構(gòu)以及它們的結(jié)構(gòu)等同物。這份說明書中描述的主題的實施例可以被實現(xiàn)為一個或多個計算機程序產(chǎn)品,即一個或多個計算機程序指令模塊,這些模塊被編碼在有形的程序載體上,以由數(shù)據(jù)處理設(shè)備執(zhí)行或控制數(shù)據(jù)處理設(shè)備的操作。有形的程序載體可以是傳播的信號或計算機可讀介質(zhì)。傳播的信號是人工產(chǎn)生的信號,例如機器產(chǎn)生的電信號、光信號或電磁信號,這些信號被產(chǎn)生以對信息進行編碼,用于傳輸?shù)胶线m的接收器設(shè)備以由計算機執(zhí)行。計算機可讀介質(zhì)可以是機器可讀的儲存裝置、機器可讀的儲存基底、存儲器裝置、實現(xiàn)機器可讀傳播信號的物質(zhì)組分、或者它們中一項或多項的組合。術(shù)語“數(shù)據(jù)處理設(shè)備”涵蓋了用于處理數(shù)據(jù)的所有的設(shè)備、裝置和機器,例如包括可編程的處理器、計算機、或者多個處理器或計算機。設(shè)備除了硬件以外,還可以包括給所涉及的計算機程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如構(gòu)成下述內(nèi)容的代碼處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、或者它們中一項或多項的組合。計算機程序(也稱為程序、軟件、軟件應(yīng)用、腳本、或代碼)可以寫成任何形式的編程語言,包括編譯語言或解釋語言,或者表述性或過程性的語言,它可以以任何形式來部署,包括作為獨立的程序或者作為模塊、組件、子例程或者適用于計算環(huán)境中的其他單元。計算機程序不一定要對應(yīng)于文件系統(tǒng)中的文件。程序可以被儲存在保存其他程序或數(shù)據(jù)(例如標記語言文檔中儲存的一個或多個腳本)的文件的一部分中,專用于所涉及的程序的單一文件中,或者多個協(xié)作的文件中(例如儲存一個或多個模塊、子程序或代碼部分的多個文件)。計算機程序可以部署成在一個計算機或多個計算機上執(zhí)行,所述多個計算機位于一個地點或分布在多個地點并由通信網(wǎng)絡(luò)而互連。這份說明書中所述的處理和邏輯流程可以由一個或多個可編程處理器來執(zhí)行,這些處理器執(zhí)行一個或多個計算機程序來通過對輸入數(shù)據(jù)進行操作并產(chǎn)生輸出而執(zhí)行功能。也可以由專門目的的邏輯電路(例如FPGA(現(xiàn)場可編程門陣列)或ASIC(專用集成電路))來執(zhí)行這些處理和邏輯流程并且設(shè)備可被實現(xiàn)為這些專門目的的邏輯電路。適于執(zhí)行計算機程序的處理器例如既包括通用和專用目的的微處理器,也包括任何種類的數(shù)字計算機的任一個或多個處理器。通常,處理器將從只讀存儲器、或隨機存取存儲器、或者這二者接收指令和數(shù)據(jù)。計算機的主要元件是用于執(zhí)行指令的處理器以及用于儲存指令和數(shù)據(jù)的一個或多個存儲器裝置。通常,計算機還會包括用于儲存數(shù)據(jù)的一個或多個海量儲存裝置(例如磁盤、磁光盤或光盤),或者以可操作的方式耦合來從其接收數(shù)據(jù)、向其傳輸數(shù)據(jù)或既接收又傳輸。但是,計算機不一定要具有這些裝置。此外,計算機也可以嵌入其他裝置中。適于儲存計算機程序指令和數(shù)據(jù)的計算機可讀介質(zhì)包括所有形式的非易失性存儲器、介質(zhì)和存儲器裝置,例如包括半導體存儲器裝置(例如EPR0M、EEPR0M和閃存裝置)、磁盤(例如內(nèi)部硬盤或可移動盤)、磁光盤、以及⑶ROM和DVD-ROM盤。處理器和存儲器可以給專門目的的邏輯電路提供補充,或者結(jié)合到其中。為了提供與用戶的交互,這份說明書中所述主題的實施例可以在具有用于向用戶顯示信息的顯示裝置(例如CRT(陰極射線管)或LCD(液晶顯示器))以及鍵盤和點選裝置(例如鼠標器或軌跡球)的計算機上實現(xiàn),用戶能夠通過所述鍵盤和點選裝置來向計算機提供輸入。其他種類裝置也可以用來提供與用戶的交互,例如,來自用戶的輸入可以以任何形式被接收,包括聲波、語音或觸覺輸入。這份說明書中所述主題的實施例可以在下述形式中實現(xiàn)包括后端組件(例如作為數(shù)據(jù)服務(wù)器)的計算系統(tǒng)、或者包括中間件組件(例如應(yīng)用服務(wù)器)的計算系統(tǒng)、或者包括前端組件(例如客戶端計算機,其具有圖形用戶界面或web瀏覽器,用戶可以通過它們來與這份說明書中所述主題的實現(xiàn)形式進行交互)的計算系統(tǒng)、或者一個或多個這種后端組件、中間件組件或前端組件的組合。系統(tǒng)的組件可以由任何形式的數(shù)字數(shù)據(jù)通信介質(zhì)(例如通信網(wǎng)絡(luò))來互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(LAN)和廣域網(wǎng)(WAN),例如因特網(wǎng)。計算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此處于遠程,并通常通過通信網(wǎng)絡(luò)來交互??蛻舳撕头?wù)器的關(guān)系起因于運行在各個計算機上、并彼此具有客戶端-服務(wù)器關(guān)系的計算機程序。盡管這份說明書包含了許多具體細節(jié),但是這些不應(yīng)認為是對任何發(fā)明的或所要求保護的范圍的限制,而應(yīng)作為可以專用于特定發(fā)明的特定實施例的特征的描述。這份說明書中在不同實施例的上下文中描述的某些特征也可以在一個實施例中結(jié)合來實現(xiàn)。相反,在單一實施例的上下文中描述的各個特征也可以在多個實施例中分別實現(xiàn)或者以任何合適的子組合形式來實現(xiàn)。此外,盡管上文可能將多個特征描述為以特定組合的形式來作用并且甚至最初如此主張了權(quán)利,但在某些情況下,來自所主張權(quán)利的組合形式的一個或多個特征也可以從該組合形式中被除去,所主張權(quán)利的組合形式也可以針對子組合或者子組合的變更形式。類似地,盡管在附圖中以特定順序描述了多個操作,但是這不應(yīng)認為要求這些操作必須以所示的順序或依次的順序來執(zhí)行,或者必須執(zhí)行全部的所示操作來獲得所需的結(jié)果。在某些情況下,多任務(wù)和并行處理可能是有利的。另外,在上述實施例中各個系統(tǒng)組件的分開不應(yīng)認為在所有實施例中都要求這種分開,應(yīng)當明白,所述的程序組件和系統(tǒng)可以大體上一起集成在單一的軟件產(chǎn)品或封裝在多個軟件產(chǎn)品中。只描述了一些實現(xiàn)形式和示例,根據(jù)本申請中所述和所示的內(nèi)容可以作出其他的實現(xiàn)形式、改進形式和變更形式。權(quán)利要求1.一種在服務(wù)器處執(zhí)行的方法,包括對來自一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項;根據(jù)所述同步會話的一個或多個屬性,選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成支持由所述服務(wù)器針對所述一個或多個數(shù)據(jù)記錄而定義的格局;以及檢測所述一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。2.根據(jù)權(quán)利要求1所述的方法,還包括當檢測到所述一個或多個客戶端被配置成支持記錄級差異化時,執(zhí)行從所述記錄級差異化向所述字段級差異化的轉(zhuǎn)換,以識別所述一個或多個數(shù)據(jù)記錄中被改變的數(shù)據(jù)項。3.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于對所述同步會話進行處理,生成改變?nèi)罩?,所述改變?nèi)罩緲俗R了與所述一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變;以及更新與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫,以反映在所生成的改變?nèi)罩局袠俗R出的對于一個或多個數(shù)據(jù)記錄的所述一個或多個改變。4.根據(jù)權(quán)利要求3所述的方法,還包括使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與所述服務(wù)器相關(guān)聯(lián)的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的所述另一數(shù)據(jù)倉庫中儲存的數(shù)據(jù)記錄。5.根據(jù)權(quán)利要求3所述的方法,其中,訪問所述另一數(shù)據(jù)倉庫包括對所生成的改變?nèi)罩具M行處理以更新所述另一數(shù)據(jù)倉庫。6.根據(jù)權(quán)利要求1所述的方法,還包括從所述一個或多個客戶端接收對于所述一個或多個數(shù)據(jù)記錄的更新;識別所接收的更新和與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫房處儲存的數(shù)據(jù)記錄之間的一個或多個沖突;以及將來自所述一個或多個客戶端的更新混合。7.根據(jù)權(quán)利要求6所述的方法,還包括通過給請求所述同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。8.根據(jù)權(quán)利要求1所述的方法,還包括當檢測到所述一個或多個客戶端被識別為非受信客戶端時,根據(jù)由所述服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局來識別與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個沖突。9.根據(jù)權(quán)利要求1所述的方法,其中,選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種包括檢測所述同步會話的一個或多個屬性,所述屬性包括用于所述數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。10.一種計算機程序產(chǎn)品,包含在計算機可讀介質(zhì)上,可操作以使數(shù)據(jù)處理設(shè)備執(zhí)行包括下述內(nèi)容的操作對來自一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項;根據(jù)所述同步會話的一個或多個屬性,選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成支持由所述服務(wù)器針對所述一個或多個數(shù)據(jù)記錄而定義的格局;以及檢測所述一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。11.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備當檢測到所述一個或多個客戶端被配置成支持記錄級差異化時,識別所述一個或多個數(shù)據(jù)記錄中被改變的數(shù)據(jù)項。12.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備執(zhí)行包括下述內(nèi)容的操作生成改變?nèi)罩?,所述改變?nèi)罩緲俗R了與所述一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變;以及更新與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫,以反映在所生成的改變?nèi)罩局袠俗R出的對于一個或多個數(shù)據(jù)記錄的所述一個或多個改變。13.根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與所述服務(wù)器相關(guān)聯(lián)的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的所述另一數(shù)據(jù)倉庫中儲存的數(shù)據(jù)記錄。14.根據(jù)權(quán)利要求13所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備訪問所述另一數(shù)據(jù)倉庫,包括對所生成的改變?nèi)罩具M行處理以更新所述另一數(shù)據(jù)倉庫。15.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備執(zhí)行包括下述內(nèi)容的操作從所述一個或多個客戶端接收對于所述一個或多個數(shù)據(jù)記錄的更新;識別所接收的更新和與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫房處儲存的數(shù)據(jù)記錄之間的一個或多個沖突;以及將來自所述一個或多個客戶端的更新混合。16.根據(jù)權(quán)利要求15所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備通過給請求所述同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。17.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,還可操作以使數(shù)據(jù)處理設(shè)備當檢測到所述一個或多個客戶端被識別為非受信客戶端時,根據(jù)由所述服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局來識別與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個差別。18.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,還可操作以通過執(zhí)行下述操作來選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種檢測所述同步會話的一個或多個屬性,所述屬性包括用于所述數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。19.一種服務(wù)器,包括處理器,其被配置成運行傳輸協(xié)議,該協(xié)議允許打開與一個或多個客戶端的一個或多個連接;和一個或多個同步協(xié)議,該協(xié)議允許所述服務(wù)器通過所打開的一個或多個連接來與所述一個或多個客戶端同步一個或多個數(shù)據(jù)類,其中,所述一個或多個同步協(xié)議允許所述服務(wù)器對來自所述一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項;根據(jù)所述同步會話的一個或多個屬性,選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,所述受信客戶端被配置成支持由所述服務(wù)器針對所述數(shù)據(jù)記錄而定義的格局;以及檢測所述一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。20.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置成運行所述一個或多個同步協(xié)議,從而當所述一個或多個客戶端被配置成支持記錄級差異化時,識別所述一個或多個數(shù)據(jù)記錄中被改變的數(shù)據(jù)項。21.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置為運行所述一個或多個同步協(xié)議,以執(zhí)行下述內(nèi)容響應(yīng)于對所述同步會話進行處理,生成改變?nèi)罩?,所述改變?nèi)罩颈砻髋c所述一個或多個數(shù)據(jù)記錄相關(guān)聯(lián)的一個或多個改變;以及更新與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)倉庫,以反映在所生成的改變?nèi)罩局斜砻鞯膶τ谝粋€或多個數(shù)據(jù)記錄的所述一個或多個改變。22.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置為運行所述一個或多個同步協(xié)議,從而使用橋客戶端來訪問另一數(shù)據(jù)倉庫,并根據(jù)與所述服務(wù)器相連的經(jīng)更新的數(shù)據(jù)倉庫來修改被訪問的數(shù)據(jù)倉庫中儲存的數(shù)據(jù)記錄。23.根據(jù)權(quán)利要求22所述的服務(wù)器,其中所述處理器被配置為運行所述一個或多個同步協(xié)議以通過對所生成的改變?nèi)罩具M行處理而更新所述另一數(shù)據(jù)倉庫,來修改所述另一數(shù)據(jù)倉庫。24.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置成運行所述一個或多個同步協(xié)議,以執(zhí)行包括下述內(nèi)容的操作從所述一個或多個客戶端接收對于所述一個或多個數(shù)據(jù)記錄的更新;識別所接收的更新和與所述服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫房處儲存的數(shù)據(jù)記錄之間的一個或多個沖突;以及將來自所述一個或多個客戶端的更新混合。25.根據(jù)權(quán)利要求M所述的服務(wù)器,其中,所述處理器被配置成運行所述一個或多個同步協(xié)議,以通過給請求所述同步會話的一個或多個客戶端中最近的那個賦予優(yōu)先級,來解決所識別的一個或多個沖突。26.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置成運行所述一個或多個同步協(xié)議,以當檢測到所述一個或多個客戶端被識別為非受信客戶端時,根據(jù)由所述服務(wù)器針對與非受信客戶端相關(guān)聯(lián)的一組改變中牽涉到的一個或多個數(shù)據(jù)記錄而定義的格局來識別與非受信客戶端相關(guān)聯(lián)的這組改變中的一個或多個差別。27.根據(jù)權(quán)利要求19所述的服務(wù)器,其中,所述處理器被配置成運行所述一個或多個同步協(xié)議,以通過下述方式來選擇性地將所述一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種檢測所述同步會話的一個或多個屬性,所述屬性包括用于所述數(shù)據(jù)記錄中包括的數(shù)據(jù)項的唯一標識符。全文摘要本發(fā)明公開了提供同步服務(wù)器處理的技術(shù)和系統(tǒng)等。對數(shù)據(jù)同步會話進行處理包括對來自一個或多個客戶端的發(fā)起同步會話的請求進行處理,以更新一個或多個數(shù)據(jù)記錄,所述一個或多個數(shù)據(jù)記錄包括一個或多個數(shù)據(jù)項。根據(jù)同步會話的一個或多個屬性,選擇性地將一個或多個客戶端識別為受信客戶端和非受信客戶端中的一種,其中,受信客戶端被配置成支持由服務(wù)器針對一個或多個數(shù)據(jù)記錄而定義的格局。檢測一個或多個客戶端是被配置成支持字段級差異化還是記錄級差異化,所述字段級差異化只針對所述一個或多個數(shù)據(jù)記錄發(fā)送被改變的數(shù)據(jù)項,所述記錄級差異化發(fā)送所述一個或多個數(shù)據(jù)記錄中包括的全部數(shù)據(jù)項。文檔編號G06F17/30GK102089760SQ200980116070公開日2011年6月8日申請日期2009年3月3日優(yōu)先權(quán)日2008年3月4日發(fā)明者卡斯特恩·古恩特爾,布倫丹·A·麥卡西申請人:蘋果公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1