專利名稱:用于松耦合設(shè)備的同步協(xié)議的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于在客戶機(jī)和服務(wù)器數(shù)據(jù)存儲(chǔ)之間同步數(shù)據(jù)的同步協(xié)議,其 中客戶機(jī)可無(wú)限期地中斷與服務(wù)器的聯(lián)系,例如,用于離線應(yīng)用程序。
些旦 冃豕
為了將數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)從服務(wù)器同步到若干客戶機(jī)并反向同步,必須適 當(dāng)?shù)卦O(shè)置同步協(xié)議以處理必定在各種設(shè)備之間發(fā)生的同步和復(fù)制。然而,當(dāng)客 戶機(jī)被允許開(kāi)始和中斷與服務(wù)器的聯(lián)系時(shí),保證適當(dāng)?shù)耐胶蛷?fù)制變得復(fù)雜。
迄今為止,己經(jīng)實(shí)現(xiàn)了用于關(guān)系型數(shù)據(jù)庫(kù)引擎和希望與關(guān)系型數(shù)據(jù)庫(kù)中的 數(shù)據(jù)同步的客戶機(jī)的少量的客戶機(jī)-服務(wù)器同步和復(fù)制協(xié)議,例如,結(jié)構(gòu)化查
詢語(yǔ)言(SQL)合并和事務(wù)復(fù)制就是基于一個(gè)這樣的協(xié)議。然而,這些客戶機(jī) -服務(wù)器同步和復(fù)制協(xié)議由于不靈活性而具有多個(gè)缺點(diǎn)。
例如,用于這些關(guān)系型數(shù)據(jù)庫(kù)引擎的現(xiàn)有同步/復(fù)制協(xié)議所共有的常見(jiàn)特 性包括(1)它們實(shí)現(xiàn)復(fù)雜的對(duì)象模型、(2)它們是緊耦合的以及(3)可縮放性 是受限的。例如,這些協(xié)議引入了使得協(xié)議的實(shí)現(xiàn)變成一項(xiàng)復(fù)雜任務(wù)的新的復(fù) 雜數(shù)據(jù)結(jié)構(gòu),從而使得問(wèn)題難以被客戶機(jī)/應(yīng)用程序開(kāi)發(fā)者受眾理解。對(duì)于緊耦 合,現(xiàn)有協(xié)議在服務(wù)器和客戶機(jī)之間采取緊耦合,這并不適合松耦合的因特網(wǎng) 客戶機(jī)或企業(yè)內(nèi)的面向服務(wù)的體系結(jié)構(gòu)(SOA)模型。這些協(xié)議還具有有限的 可縮放性,因?yàn)閭鹘y(tǒng)的緊耦合協(xié)議通常對(duì)服務(wù)器具有保存關(guān)于其所有客戶機(jī)的 元數(shù)據(jù)的要求,而管理這些元數(shù)據(jù)的開(kāi)銷降低了服務(wù)器可縮放性。
因此,需要解決以上所標(biāo)識(shí)的服務(wù)器和松耦合客戶機(jī)之間的數(shù)據(jù)同步和復(fù) 制的現(xiàn)有技術(shù)中的每一個(gè)問(wèn)題的同步協(xié)議。更具體而言,需要通過(guò)實(shí)現(xiàn)應(yīng)用程 序開(kāi)發(fā)者已經(jīng)熟悉的概念和數(shù)據(jù)類型來(lái)向開(kāi)發(fā)者呈現(xiàn)簡(jiǎn)單的同步協(xié)議的熟悉 的對(duì)象模型。此外,需要用于松耦合設(shè)備的同步協(xié)議并且需要性能不會(huì)由于維 護(hù)客戶機(jī)狀態(tài)的高成本而降低的高度可縮放服務(wù)器。
因此,考慮到服務(wù)器和松耦合客戶機(jī)之間的數(shù)據(jù)同步的現(xiàn)有技術(shù)不夠完善,期望提供一種改進(jìn)的同步協(xié)議及相應(yīng)方法。松耦合設(shè)備的上下文中的現(xiàn)有 同步技術(shù)中的這些和其他缺陷在描述了將在以下更詳細(xì)地闡述的本發(fā)明的各 示例性、非限制性實(shí)施例后將變得顯而易見(jiàn)。
概述
本發(fā)明提供了一種供在松耦合客戶機(jī)的上下文中使用的傳輸不可知同步 協(xié)議及相應(yīng)方法。該同步協(xié)議啟用一種無(wú)狀態(tài)服務(wù)器,其使該服務(wù)器從維護(hù)其 客戶機(jī)的同步狀態(tài)中解放并允許對(duì)許多客戶機(jī)的可縮放性。提供了一種供客戶 機(jī)獲悉對(duì)于服務(wù)器所提供的各組數(shù)據(jù)的不同的同步服務(wù)的可發(fā)現(xiàn)性服務(wù)以使 得客戶機(jī)可選擇或訂閱感興趣的同步組,并且該協(xié)議用客戶機(jī)所訂閱的未知的
任何數(shù)據(jù)結(jié)構(gòu)的任何模式來(lái)初始化該客戶機(jī)。此外,該協(xié)議啟用了一種可擴(kuò)展 同步錨模型,其在客戶機(jī)和服務(wù)器之間傳輸錨類型而無(wú)需假設(shè)客戶機(jī)數(shù)據(jù)機(jī) 構(gòu),從而允許各種各樣的錨數(shù)據(jù)類型和功能。
此處提供了簡(jiǎn)化概述以幫助啟用對(duì)以下更詳細(xì)的描述和附圖中的示例性、 非限制性實(shí)施例的各方面的基本或大體的理解。然而,本概述并不旨在作為詳 盡的或窮盡的概觀。相反,本概述的唯一目的是以簡(jiǎn)化的形式來(lái)介紹與本發(fā)明 的某些示例性非限制性實(shí)施例相關(guān)的一些概念,作為以下本發(fā)明的各實(shí)施例的 更為詳細(xì)的描述的序言。
附圖簡(jiǎn)述
參考附圖進(jìn)一步描述本發(fā)明的同步協(xié)議,在附圖中
圖1是根據(jù)本發(fā)明的協(xié)議的用于與離線應(yīng)用程序同步的示例性、非限制性 體系結(jié)構(gòu)的框圖2是示出根據(jù)本發(fā)明的用于同步同步組的本發(fā)明的協(xié)議的示例性、非限 制性實(shí)現(xiàn)的流程圖3是示出用于從服務(wù)器及相應(yīng)模式中發(fā)現(xiàn)同步組的本發(fā)明的協(xié)議的示 例性、非限制性實(shí)現(xiàn)的流程圖4是示出本發(fā)明的可擴(kuò)展同步錨模型的各示例性方面的框圖5A和5B示出了在不預(yù)先知道客戶機(jī)或服務(wù)器側(cè)存儲(chǔ)結(jié)構(gòu)的情況下在客戶機(jī)和服務(wù)器之間來(lái)回傳遞數(shù)據(jù)結(jié)構(gòu)的示例性、非限制性數(shù)據(jù)集實(shí)現(xiàn);
圖6示出了本發(fā)明的同步到例如作為轂和輻同步模型的一部分的許多客 戶機(jī)的可縮放性。
圖7是實(shí)現(xiàn)從本發(fā)明的服務(wù)器的觀點(diǎn)來(lái)看的用于同步的示例性、非限制性 過(guò)程的流程圖8是表示其中可實(shí)現(xiàn)本發(fā)明的示例性、非限制性網(wǎng)絡(luò)化環(huán)境的框圖;以
及
圖9是表示其中可實(shí)現(xiàn)本發(fā)明的示例性、非限制性計(jì)算系統(tǒng)或操作環(huán)境的 框圖。
詳細(xì)描述 概觀
如背景中所討論的,現(xiàn)有同步協(xié)議實(shí)現(xiàn)過(guò)度復(fù)雜的對(duì)象模型,過(guò)于緊耦合 以至于無(wú)法用于離線應(yīng)用程序并且其可縮放性由于服務(wù)器開(kāi)銷而受到限制。因 此,考慮到現(xiàn)有技術(shù)中的這些缺陷,本發(fā)明提供了供在松耦合客戶機(jī)的上下文 中使用的經(jīng)改進(jìn)的同步協(xié)議及相應(yīng)方法。
本發(fā)明提供了使用開(kāi)發(fā)者熟悉的概念和數(shù)據(jù)結(jié)構(gòu)的同步協(xié)議。本發(fā)明的同 步協(xié)議也是傳輸不可知協(xié)議,其啟用無(wú)狀態(tài)服務(wù)器,g卩,服務(wù)器從維護(hù)其客戶 機(jī)的同步狀態(tài)的需求中解放。作為使得服務(wù)器從這些管理職責(zé)中解放的結(jié)果, 本發(fā)明高度可縮放至大量客戶機(jī),因?yàn)樵搮f(xié)議不需要服務(wù)器保存其客戶機(jī)的狀 態(tài)。因此,根據(jù)本發(fā)明,在客戶機(jī)上維護(hù)客戶機(jī)的同步狀態(tài)元數(shù)據(jù)。
此外,本發(fā)明的同步協(xié)議提供了可發(fā)現(xiàn)性服務(wù),以使得客戶機(jī)可獲悉服務(wù) 器所提供的對(duì)于各組數(shù)據(jù)的不同的同步服務(wù)以使得客戶機(jī)可選擇或訂閱感興 趣的同步組。
用于離線應(yīng)用程序的同步協(xié)議
如上所述,本發(fā)明的同步協(xié)議提供了相對(duì)于現(xiàn)有技術(shù)的各種優(yōu)點(diǎn)。例如, 本發(fā)明的同步協(xié)議啟用無(wú)狀態(tài)服務(wù)器模型,其中該協(xié)議不假設(shè)服務(wù)器預(yù)先知道 客戶機(jī),從而允許可縮放至大量客戶機(jī)的服務(wù)器實(shí)現(xiàn)。
在各非限制性實(shí)施例中,本發(fā)明的同步協(xié)議啟用了發(fā)現(xiàn)和初始化模型以使得當(dāng)客戶機(jī)遇到服務(wù)器時(shí)該客戶機(jī)能夠發(fā)現(xiàn)從該服務(wù)器中展示的同步組。 一旦 客戶機(jī)訂閱了從服務(wù)器中展示的一個(gè)或多個(gè)同步組,如果該客戶機(jī)還不具有同 步組中表的適當(dāng)模式,則該協(xié)議就用該客戶機(jī)所使用的尚不可從該客戶機(jī)訪問(wèn) 的任何模式來(lái)初始化該客戶機(jī)。
在本發(fā)明的同步協(xié)議的其他示例性、非限制性實(shí)施例中,提供了可擴(kuò)展同 步錨模型,其中該協(xié)議在客戶機(jī)和服務(wù)器之間傳輸錨類型,但不假設(shè)客戶機(jī)上 的任何特定結(jié)構(gòu),從而允許具有將要利用的不同層次特征的大量錨數(shù)據(jù)類型。 此外,這允許開(kāi)發(fā)者針對(duì)現(xiàn)有服務(wù)器構(gòu)建同步應(yīng)用程序而不必改變服務(wù)器上的 錨格式,從而進(jìn)一步最小化了服務(wù)器影響。
在本發(fā)明的同步協(xié)議的其他非限制性實(shí)施例中,提供了客戶機(jī)用于存儲(chǔ)同 步元數(shù)據(jù)的元數(shù)據(jù)存儲(chǔ)模型,從而使得服務(wù)器從維護(hù)關(guān)于客戶機(jī)的任何同步元 數(shù)據(jù)中解放。
如上所述,本發(fā)明的同步協(xié)議可用于支持離線應(yīng)用程序。包括離線應(yīng)用程 序在內(nèi)的應(yīng)用程序框架的概覽在圖1的示例性、非限制性框圖中示出。
圖1描繪了N層體系結(jié)構(gòu)場(chǎng)景。在客戶機(jī)側(cè),同步協(xié)議由同步代理組件
130來(lái)組織(orchestrate)。然而,注意,本發(fā)明的同步協(xié)議是傳輸不可知的。 因此,圖1描繪了使用web服務(wù)150的僅一個(gè)可能的傳輸實(shí)現(xiàn)。位于客戶機(jī)側(cè) 的同步代理程序130是核心同步引擎并實(shí)現(xiàn)用于執(zhí)行以下步驟的邏輯(A)從 客戶機(jī)和服務(wù)器數(shù)據(jù)庫(kù)中收集元數(shù)據(jù),(B)將改變上傳到服務(wù)器數(shù)據(jù)庫(kù)以及將 改變從服務(wù)器數(shù)據(jù)庫(kù)下載到客戶機(jī)提供者,或者(C)將錯(cuò)誤、進(jìn)展和沖突事件 傳播至客戶機(jī)應(yīng)用程序。
同步代理程序130通過(guò)服務(wù)器同步提供者接口使用同步適配器170來(lái)與服 務(wù)器數(shù)據(jù)庫(kù)190交互。此外,每一個(gè)同步適配器170都定義對(duì)于在客戶機(jī)和服 務(wù)器之間同步的每一個(gè)表的表和列映射,并對(duì)兩個(gè)或多個(gè)表進(jìn)行邏輯分組。
同步代理程序130接受對(duì)代理程序130分別隱藏客戶機(jī)數(shù)據(jù)庫(kù)110和服務(wù) 器數(shù)據(jù)庫(kù)190細(xì)節(jié)的客戶機(jī)同步提供者120和服務(wù)器同步提供者160。
同步代理程序130接受同步組180的集合并運(yùn)行本發(fā)明所提供的協(xié)議以使 得這些組180保持同步。同步適配器170指示同步代理程序130如何與服務(wù)器 數(shù)據(jù)庫(kù)190交互。在這一點(diǎn)上,同步代理程序130不直接與同步適配器170交
9互,而是同步代理程序130與服務(wù)器提供者160交互,服務(wù)器提供者160進(jìn)而
使用同步適配器170來(lái)連接到數(shù)據(jù)庫(kù)190。該交互通過(guò)根據(jù)本發(fā)明的各非限制 性實(shí)施例的以下數(shù)據(jù)庫(kù)命令對(duì)象中的一個(gè)或多個(gè)來(lái)定義Insert(插入)、Update (更新)、Delete (刪除)、Select Incremental Inserts (選擇增量插入)、Select Incremental Updates (選擇增量更新)、Select Incremental Deletes (選擇增量刪 除)、Select Update Conflict (選擇更新沖突)禾口/或Select Delete Conflict (選 擇刪除沖突)命令。
根據(jù)本發(fā)明的插入命令供服務(wù)器同步提供者用來(lái)將對(duì)客戶機(jī)數(shù)據(jù)庫(kù)的插 入傳播至服務(wù)器數(shù)據(jù)庫(kù)。
根據(jù)本發(fā)明的更新命令供服務(wù)器同步提供者用來(lái)將客戶機(jī)上的更新傳播 至服務(wù)器數(shù)據(jù)庫(kù)。
根據(jù)本發(fā)明的刪除命令供服務(wù)器同步提供者用來(lái)將客戶機(jī)上的刪除傳播 至服務(wù)器數(shù)據(jù)庫(kù)。
根據(jù)本發(fā)明的選擇增量插入命令供服務(wù)器同步提供者用來(lái)枚舉自從客戶 機(jī)上一次同步之后發(fā)生在服務(wù)器上的插入。
根據(jù)本發(fā)明的選擇增量更新命令供服務(wù)器同步提供者用來(lái)枚舉自從客戶 機(jī)上一次同步之后發(fā)生在服務(wù)器上的更新。
根據(jù)本發(fā)明的選擇增量刪除命令供服務(wù)器同步提供者用來(lái)枚舉自從客戶 機(jī)上一次同步之后發(fā)生在服務(wù)器上的刪除。
根據(jù)本發(fā)明的選擇更新沖突命令供服務(wù)器同步提供者用來(lái)獲取導(dǎo)致插入、 更新或刪除命令失敗的現(xiàn)有行。該命令執(zhí)行對(duì)數(shù)據(jù)表中的沖突行的査找。
根據(jù)本發(fā)明的選擇刪除沖突命令供服務(wù)器同步提供者用來(lái)獲取導(dǎo)致插入、 更新或刪除命令失敗的現(xiàn)有行。在一個(gè)實(shí)施例中,該命令執(zhí)行對(duì)邏輯刪除 (tombstone)表中的沖突行的査找以找出邏輯刪除表中導(dǎo)致更新命令失敗的 行,但不在插入或刪除命令失敗時(shí)使用。
在一個(gè)非限制性實(shí)施例中,本發(fā)明的同步適配器170通過(guò)使用或擴(kuò)展數(shù)據(jù) 適配器構(gòu)造來(lái)類似于ActiveX數(shù)據(jù)對(duì)象(ADO.NET)中的數(shù)據(jù)適配器地實(shí)現(xiàn), 但為了避免疑惑,本發(fā)明并不限于類似數(shù)據(jù)適配器的實(shí)現(xiàn)。
對(duì)于根據(jù)本發(fā)明的服務(wù)器同步提供者160,在一個(gè)非限制性實(shí)施例中,啟用默認(rèn)和自定義提供者160兩者。提供默認(rèn)提供者160是為了解決常見(jiàn)應(yīng)用程序情況(例如,瘦客戶端情況、富客戶端情況、SQL移動(dòng)、SQL表達(dá)式等)。 應(yīng)用程序開(kāi)發(fā)者和第三方還可針對(duì)較不常見(jiàn)的情況(例如,Access、 FoxPro) 經(jīng)由簡(jiǎn)單的框架和自定義提供者160的幫助類來(lái)實(shí)現(xiàn)這一自定義提供者160。 此處所使用的實(shí)施例和示例中的某一些涉及數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ),但為了避免疑 惑,客戶機(jī)或服務(wù)器數(shù)據(jù)存儲(chǔ)可以是任何數(shù)據(jù)存儲(chǔ)。在本發(fā)明的各非限制性實(shí)施例中,同步提供者160的功能包括,但不限于 存儲(chǔ)關(guān)于組180的同步信息的能力、枚舉自從上一次同步以來(lái)在數(shù)據(jù)庫(kù)上發(fā)生 的增量改變的能力、對(duì)數(shù)據(jù)庫(kù)施加增量改變的能力、檢測(cè)沖突的更新并可任選 地程序性地或交互式地解決它們的能力、以及激發(fā)(fire)進(jìn)展和數(shù)據(jù)改變事 件的能力。對(duì)于同步代理140,需要直接連接到服務(wù)器數(shù)據(jù)庫(kù)190的解決方案目前已 經(jīng)很少見(jiàn)了,因?yàn)榛赟OA的解決方案正在日益普及。對(duì)于SOA模型,服務(wù) 器195展示其功能作為按需連接到服務(wù)器195的web服務(wù)150。客戶機(jī)通過(guò)因 特網(wǎng)或通過(guò)企業(yè)內(nèi)的本地內(nèi)聯(lián)網(wǎng)來(lái)與web服務(wù)器150交互。同步代理組件140 因此是允許構(gòu)建斷開(kāi)的SOA解決方案的簡(jiǎn)單接口,但如先前所強(qiáng)調(diào)的,可使 用用于根據(jù)本發(fā)明的同步協(xié)議的任何傳輸機(jī)制。因此,圖1描述了供在膝上型計(jì)算機(jī)100和工作站105上運(yùn)行的應(yīng)用程序 各自與為如服務(wù)器195所維護(hù)的服務(wù)器數(shù)據(jù)庫(kù)190中的數(shù)據(jù)定義的一個(gè)或多個(gè) 同步組180同步的示例性、非限制性同步環(huán)境。根據(jù)本發(fā)明的同步協(xié)議的示例性、非限制性實(shí)現(xiàn)在圖2的流程圖中示出, 該流程圖表示由客戶機(jī)C發(fā)起的、用于根據(jù)按照該同步協(xié)議的各服務(wù)器處理步 驟(在右側(cè)示出)來(lái)與服務(wù)器S同步的各客戶機(jī)處理步驟(在左側(cè)示出)。如圖2的示例性、非限制性流程圖所示,響應(yīng)于由客戶機(jī)C在200處作 出的對(duì)服務(wù)器S的"Synchronize()"命令的調(diào)用,客戶機(jī)側(cè)同步代理在傳遞給 Synchronize()調(diào)用時(shí)收集關(guān)于所需同步組的元數(shù)據(jù)信息,即,在210,取得本 地同步錨。同步錨是諸如字符串等將同步事件表示為同步時(shí)間中的位置的信息。例 如,可定義多個(gè)同步錨,諸如上一個(gè)和下一個(gè)等,這兩者分別描述從發(fā)送設(shè)備的觀點(diǎn)來(lái)看的當(dāng)數(shù)據(jù)庫(kù)被同步時(shí)的上一個(gè)事件和當(dāng)前同步事件。接收設(shè)備然后 在某一時(shí)刻存儲(chǔ)每一個(gè)下一個(gè)同步錨以便結(jié)合將來(lái)同步使用。對(duì)上一個(gè)和下一 個(gè)同步錨的比較允許確定應(yīng)更新什么同步組。還應(yīng)注意,在任何時(shí)刻,或作為初始Synchronize()調(diào)用的一部分,如果同 步代理檢測(cè)到可從服務(wù)器S獲得的新同步組,則開(kāi)始本發(fā)明的同步協(xié)議的模式 初始化部分(未在圖2中示出)以便于理解用于表示該新同步組的數(shù)據(jù)結(jié)構(gòu)的 規(guī)則。對(duì)于Synchronize()調(diào)用中所包括的每一個(gè)同步組,在220,同步代理請(qǐng)求 改變從客戶機(jī)同步提供者進(jìn)入到數(shù)據(jù)集對(duì)象中并在225處將組改變上傳到服務(wù)器。在230,服務(wù)器同步提供者對(duì)組中的每一個(gè)表施加所接收到的改變(例如, 以相同的表次序插入到組中,以相反的次序刪除)。在235,服務(wù)器同步提供者收集在230處施加改變時(shí)所遇到的沖突,并生 成對(duì)改變已被施加的確認(rèn),并將沖突和確認(rèn)返回給客戶機(jī)以供后處理。在240,同步代理接收對(duì)在230處在服務(wù)器處施加改變的確認(rèn)(ACK)并 基于針對(duì)客戶機(jī)定義的任何同步和沖突策略來(lái)執(zhí)行沖突解決或錯(cuò)誤報(bào)告。在250,同步代理在下一上傳階段內(nèi)將本地錨存儲(chǔ)或持久存儲(chǔ)在本地?cái)?shù)據(jù) 庫(kù),其中客戶機(jī)收集關(guān)于所需同步組的下一組元數(shù)據(jù)信息以便與持久存儲(chǔ)的本 地錨進(jìn)行比較。從客戶機(jī)觀點(diǎn)來(lái)看,下載階段265在260處開(kāi)始,在那里對(duì)服務(wù)器作出調(diào) 用以枚舉對(duì)相同的同步組的改變并阻塞直到該調(diào)用返回。在270,服務(wù)器同步提供者獲取同步組的新的錨并且然后枚舉對(duì)于組中的 每一個(gè)表的所有改變,并且在一示例性、非限制性實(shí)施例中,將改變打包在一 個(gè)或多個(gè)數(shù)據(jù)集對(duì)象中。在一個(gè)實(shí)施例中,每一個(gè)請(qǐng)求返回一個(gè)數(shù)據(jù)集,其包 括同步組中所有表的數(shù)據(jù)。在275,然后將改變從服務(wù)器發(fā)送到客戶機(jī)。在280,客戶機(jī)同步代理從服務(wù)器接收改變和新的錨,解析這些改變并施 加于每一行。在290,同步代理進(jìn)而處理在基于所應(yīng)用的或默認(rèn)沖突策略來(lái)施加于行時(shí) 所遇到的沖突。在295,同步代理然后在結(jié)束同步會(huì)話之前將從服務(wù)器接收到的錨存儲(chǔ)在 本地?cái)?shù)據(jù)庫(kù)中。上述同步協(xié)議提供了適于并非一直與服務(wù)器聯(lián)系、但希望與服務(wù)器同步的 離線應(yīng)用程序的益處。例如,該協(xié)議啟用其中協(xié)議不假設(shè)服務(wù)器預(yù)先知道客戶 機(jī)的同步狀態(tài)的無(wú)狀態(tài)服務(wù)器模型,這允許可縮放服務(wù)器實(shí)現(xiàn),因?yàn)榭蛻魴C(jī)元 數(shù)據(jù)并非在服務(wù)器上構(gòu)建。在這一點(diǎn)上,該協(xié)議啟用了其中客戶機(jī)存儲(chǔ)同步元 數(shù)據(jù)的客戶機(jī)元數(shù)據(jù)存儲(chǔ)模型,從而使服務(wù)器從對(duì)客戶機(jī)同步元數(shù)據(jù)的存儲(chǔ)、維護(hù)和其他處理開(kāi)銷中解放,尤其在客戶機(jī)設(shè)備經(jīng)由協(xié)議增長(zhǎng)(proliferate)來(lái)同步時(shí)。如上所述,本發(fā)明的協(xié)議還包括用于發(fā)現(xiàn)對(duì)于其客戶機(jī)尚未具有適用模式 的任何所需同步組的模式的發(fā)現(xiàn)和初始化模型。該協(xié)議使得客戶機(jī)能夠發(fā)現(xiàn)從 特定服務(wù)器中展示的同步組。該協(xié)議還在客戶機(jī)上尚不存在該客戶機(jī)出于同步 目的而訂閱的表的一個(gè)或多個(gè)模式的情況下用這些模式來(lái)初始化該客戶機(jī)。圖3示出了本發(fā)明的協(xié)議所啟用的發(fā)現(xiàn)和初始化過(guò)程的一示例性、非限制 性實(shí)現(xiàn)。在300,客戶機(jī)C請(qǐng)求服務(wù)器S上可用的同步組。基于客戶機(jī)C和對(duì) 同步組的請(qǐng)求,服務(wù)器S確定什么同步組對(duì)于其客戶機(jī)C具有同步許可是可用 的,例如,但不限于使該確定基于涉及該客戶機(jī)請(qǐng)求的訂閱權(quán)限、安全級(jí)別等。 在315,將用于客戶機(jī)同步的可用同步組發(fā)送到客戶機(jī)C。在320,客戶機(jī)C 可顯式或隱式地選擇那些可用同步組的子集,然而客戶機(jī)C可能無(wú)法擁有或以 其他方式訪問(wèn)涉及所選同步組中的全部的模式。由此,在330,客戶機(jī)C然后 例如通過(guò)標(biāo)識(shí)對(duì)于其客戶機(jī)C不具有模式的任一個(gè)或多個(gè)未知同步組來(lái)請(qǐng)求 這些同步組的模式。在340,服務(wù)器S接收請(qǐng)求,并在345取回或向客戶機(jī)C 提供服務(wù)器S可訪問(wèn)的任一個(gè)或多個(gè)同步組的模式。然后,客戶機(jī)C準(zhǔn)備根據(jù) 圖2的步驟200來(lái)同步。在其他非限制性實(shí)施例中,本發(fā)明通過(guò)提供在客戶機(jī)和服務(wù)器之間傳輸錨類型來(lái)啟用可擴(kuò)展同步錨模型,但不假設(shè)客戶機(jī)上的任何預(yù)定義結(jié)構(gòu)的協(xié)議并 由此靈活地允許具有不同層次特征的各種各樣的錨數(shù)據(jù)類型。圖4示出各種錨 類型A—Tl、 A—T2、 ...、 A一TN可根據(jù)本發(fā)明的協(xié)議來(lái)在服務(wù)器400和客戶機(jī) 410之間來(lái)回傳遞。另外,錨的結(jié)構(gòu)由服務(wù)器來(lái)定義并且有利的是,客戶機(jī)無(wú)需為了與服務(wù)器同步而去理解該格式。圖5A示出了其中數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)500 (即,ADO.NET V2數(shù)據(jù)集對(duì)象) 在客戶機(jī)側(cè)同步代理程序BO和服務(wù)器側(cè)同步提供者160之間傳遞的本發(fā)明的 一示例性實(shí)施例。在客戶機(jī)側(cè)提供數(shù)據(jù)集接口 510以便對(duì)數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)500 進(jìn)行來(lái)回轉(zhuǎn)換,并且在服務(wù)器側(cè)提供數(shù)據(jù)集接口 512以便對(duì)數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu) 512進(jìn)行來(lái)回轉(zhuǎn)換。或者,如圖5B所示,分別在客戶機(jī)側(cè)和服務(wù)器側(cè)上的數(shù) 據(jù)集接口 520和522可用于分別結(jié)合客戶機(jī)數(shù)據(jù)庫(kù)IIO和服務(wù)器數(shù)據(jù)庫(kù)190來(lái) 對(duì)數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)進(jìn)行來(lái)回轉(zhuǎn)換。為了避免疑惑,上述數(shù)據(jù)集實(shí)現(xiàn)是非限制性 的并由此,可利用其他數(shù)據(jù)結(jié)構(gòu)來(lái)表示根據(jù)本發(fā)明的、客戶機(jī)和服務(wù)器之間往 返的同步數(shù)據(jù)以及適當(dāng)?shù)慕涌?。無(wú)論選擇什么實(shí)現(xiàn),本發(fā)明的協(xié)議由此都能夠 以傳輸無(wú)關(guān)的方式操作而無(wú)需知道客戶機(jī)或服務(wù)器側(cè)的數(shù)據(jù)存儲(chǔ)的確切格式。有利的是,如圖6所示,因?yàn)樵獢?shù)據(jù)被存儲(chǔ)在客戶機(jī)上,所以本發(fā)明的同 步協(xié)議可用于根據(jù)轂和輻模型來(lái)同步數(shù)據(jù),在該模型中,客戶機(jī)610a、 610b、 610c等可開(kāi)始與服務(wù)器600聯(lián)系并各自與同步組605的數(shù)據(jù)同步。基于諸如時(shí) 間戳等正在同步的數(shù)據(jù)的時(shí)間特性并根據(jù)沖突解決策略,只要客戶機(jī)開(kāi)始與服 務(wù)器聯(lián)系,就可在服務(wù)器600和客戶機(jī)610a、 610b、 610c處維護(hù)一致的同步 組605的數(shù)據(jù)集。圖7是實(shí)現(xiàn)從本發(fā)明的服務(wù)器的觀點(diǎn)來(lái)看的用于同步的示例性、非限制性 過(guò)程的流程圖。在700,從客戶機(jī)接收包括同步元數(shù)據(jù)的對(duì)一個(gè)或多個(gè)同步組 的請(qǐng)求。在710,從客戶機(jī)接收對(duì)一個(gè)或多個(gè)同步組的任何改變并更新這些同 步組。在720,確定由改變所呈現(xiàn)的任何沖突。在730,將對(duì)處理請(qǐng)求和沖突 的確認(rèn)發(fā)送到客戶機(jī)。在740,枚舉對(duì)客戶機(jī)的客戶機(jī)側(cè)改變,從而使得該客 戶機(jī)能夠更新該一個(gè)或多個(gè)同步組。在750,根據(jù)允許具有不同特征的多個(gè)錨 數(shù)據(jù)類型的可擴(kuò)展錨模型來(lái)將同步錨從服務(wù)器發(fā)送到客戶機(jī)。示例性網(wǎng)絡(luò)化和分布式環(huán)境本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明可以結(jié)合任何計(jì)算機(jī)或可作為計(jì)算 機(jī)網(wǎng)絡(luò)的一部分來(lái)部署的其它客戶機(jī)或服務(wù)器設(shè)備來(lái)實(shí)現(xiàn),或可在連接至任何 種類的數(shù)據(jù)存儲(chǔ)的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在這一點(diǎn)上,本發(fā)明涉及任何計(jì)算 機(jī)系統(tǒng)或環(huán)境,其具有任意數(shù)目的存儲(chǔ)器或存儲(chǔ)單元,以及發(fā)生在任意數(shù)目的存儲(chǔ)單元或巻上的任意數(shù)目的應(yīng)用程序和進(jìn)程,它們可結(jié)合根據(jù)本發(fā)明的同步協(xié)議來(lái)使用。本發(fā)明可應(yīng)用于具有部署在具有遠(yuǎn)程或本地存儲(chǔ)的網(wǎng)絡(luò)環(huán)境或分 布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的環(huán)境。本發(fā)明也可應(yīng)用于具有用于結(jié)合遠(yuǎn)程或本地服務(wù)和進(jìn)程生成、接收和發(fā)送信息的編程語(yǔ)言功能、解釋和執(zhí)行能力的獨(dú)立計(jì)算設(shè)備。分布式計(jì)算通過(guò)計(jì)算設(shè)備和系統(tǒng)之間的交換提供了計(jì)算機(jī)資源和服務(wù)的共享。這些資源和服務(wù)包括信息的交換、對(duì)于諸如文件等對(duì)象的高速緩存存儲(chǔ) 和盤(pán)存儲(chǔ)。分布式計(jì)算利用網(wǎng)絡(luò)連接,從而允許客戶機(jī)利用它們的集體力量來(lái) 使整個(gè)企業(yè)受益。在這一點(diǎn)上,各種設(shè)備可具有可包含本發(fā)明的同步協(xié)議的應(yīng)用 程序、對(duì)象或資源。圖8提供了示例性的網(wǎng)絡(luò)化或分布式計(jì)算環(huán)境的示意圖。分布式計(jì)算環(huán)境包括計(jì)算對(duì)象810a、 810b等,以及計(jì)算對(duì)象或設(shè)備820a、 820b、 820c、 820d、 820e等。這些對(duì)象可包括程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等等。這些對(duì)象 可包括諸如PDA、音頻/視頻設(shè)備、MP3播放器、個(gè)人計(jì)算機(jī)等的相同或不同 設(shè)備的各部分。每一對(duì)象可通過(guò)通信網(wǎng)絡(luò)840與另一對(duì)象通信。該網(wǎng)絡(luò)本身可 以包括向圖8的系統(tǒng)提供服務(wù)的其它計(jì)算對(duì)象和計(jì)算設(shè)備,且其本身可以表示 多個(gè)互連的網(wǎng)絡(luò)。根據(jù)本發(fā)明的一方面,每一對(duì)象810a、 810b等,或820a、 820b、 820c、 820d、 820e等可包含可利用適用于根據(jù)本發(fā)明的用于同步數(shù)據(jù)組 的系統(tǒng)和方法的API、或其它對(duì)象、軟件、固件和/或硬件的應(yīng)用程序。還可以理解,諸如820c等對(duì)象可以主存在另一計(jì)算設(shè)備810a、 810b等或 820a、 820b、 820c、 820d、 820e等上。因此,盡管所示的物理環(huán)境可以將所連 接的設(shè)備示為計(jì)算機(jī),但是這樣的圖示僅是示例性的,并且該物理環(huán)境可以被 替換地描述或描繪成含有諸如PDA、電視機(jī)、MP3播放器等的各種數(shù)字設(shè)備, 它們中的任一個(gè)可采用諸如接口、 COM對(duì)象等各種有線和無(wú)線服務(wù)、軟件對(duì) 象。存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng) 可以通過(guò)有線或無(wú)線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許 多網(wǎng)絡(luò)被耦合至因特網(wǎng),后者為廣泛分布的計(jì)算提供了基礎(chǔ)結(jié)構(gòu)并包含許多不 同的網(wǎng)絡(luò)。任何基礎(chǔ)架構(gòu)都可用于便于本發(fā)明的同步協(xié)議的示例性通信。在家庭網(wǎng)絡(luò)環(huán)境中,有至少四個(gè)全異的網(wǎng)絡(luò)傳輸介質(zhì),其每一個(gè)可支持一 種唯一的協(xié)議,這些介質(zhì)諸如電力線、數(shù)據(jù)(無(wú)線和有線)、語(yǔ)音(如,電話) 和娛樂(lè)媒體。諸如電燈開(kāi)關(guān)和電器設(shè)備等大多數(shù)家庭控制設(shè)備可使用電力線來(lái) 連接。數(shù)據(jù)服務(wù)可通過(guò)寬帶(如,DSL或電纜調(diào)制解調(diào)器)進(jìn)入家庭,并可在家庭內(nèi)使用無(wú)線(如,HomeRF或802.11B)或有線(如,家庭PNA、 Cat 5、 以太網(wǎng)、甚至是電力線)連接來(lái)訪問(wèn)。語(yǔ)音話務(wù)可通過(guò)有線(如,Cat3)或無(wú) 線(如,蜂窩電話)進(jìn)入家庭,并可在家庭中使用Cat3連線來(lái)分布。娛樂(lè)媒 體或其它圖形數(shù)據(jù)可通過(guò)衛(wèi)星或電纜進(jìn)入家庭,并通常在家庭中使用同軸電纜 來(lái)分布。IEEE 1394和DVI也是用于介質(zhì)設(shè)備群集的數(shù)字互聯(lián)??勺鳛閰f(xié)議標(biāo) 準(zhǔn)浮現(xiàn)或己經(jīng)浮現(xiàn)的所有這些網(wǎng)絡(luò)環(huán)境和其它環(huán)境可被互聯(lián)來(lái)形成可通過(guò)諸 如因特網(wǎng)等廣域網(wǎng)連接到外部世界的網(wǎng)絡(luò),諸如內(nèi)聯(lián)網(wǎng)。簡(jiǎn)而言之,對(duì)數(shù)據(jù)的 存儲(chǔ)和傳輸存在各種不同的源,因此本發(fā)明的任何計(jì)算設(shè)備可按照任何現(xiàn)有方 式共享和傳輸數(shù)據(jù),且在本文實(shí)施例中描述的方式不旨在是限定性的。因特網(wǎng)通常指使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議套件的網(wǎng)絡(luò)和 網(wǎng)關(guān)的集合,這些協(xié)議在計(jì)算機(jī)聯(lián)網(wǎng)領(lǐng)域中是公知的。因特網(wǎng)可被描述為由執(zhí) 行允許用戶通過(guò)網(wǎng)絡(luò)交互和共享信息的聯(lián)網(wǎng)協(xié)議的計(jì)算機(jī)互連的地理上分布 開(kāi)的遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò)的系統(tǒng)。由于這類廣泛分布信息的共享,諸如因特網(wǎng)等遠(yuǎn) 程網(wǎng)絡(luò)至今發(fā)展成一種開(kāi)放式系統(tǒng),開(kāi)發(fā)者可用該開(kāi)放式系統(tǒng)設(shè)計(jì)用于執(zhí)行專 用操作或服務(wù)的軟件應(yīng)用程序而基本上沒(méi)有限制。由此,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)啟用了諸如客戶機(jī)/服務(wù)器、對(duì)等或混合體系結(jié)構(gòu)等 大量網(wǎng)絡(luò)拓樸結(jié)構(gòu)。"客戶機(jī)"是使用與它無(wú)關(guān)的另一類或組的服務(wù)的一個(gè)類或 組中的成員。由此,在計(jì)算時(shí),客戶機(jī)是進(jìn)程,g卩,粗略地而言是一組請(qǐng)求由 另一程序提供的服務(wù)的指令或任務(wù)??蛻魴C(jī)進(jìn)程利用所請(qǐng)求的服務(wù),而不必"知 道"有關(guān)其它程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中, 尤其在網(wǎng)絡(luò)化系統(tǒng)中,客戶機(jī)通常是訪問(wèn)由例如服務(wù)器等另一計(jì)算機(jī)提供的共 享的網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖8的圖示中,作為一個(gè)示例,計(jì)算機(jī)820a、 820b、 820c、 820d、 820e等可以被認(rèn)為是客戶機(jī),而計(jì)算機(jī)810a、 810b等可以被認(rèn) 為是服務(wù)器,其中服務(wù)器810a、 810b等維護(hù)隨后被同步或復(fù)制到客戶計(jì)算機(jī) 820a、 820b、 820c、 820d、 820e等的數(shù)據(jù),然而取決于環(huán)境任何計(jì)算機(jī)都可被認(rèn)為是客戶機(jī)、服務(wù)器或兩者。這些計(jì)算設(shè)備中的任一個(gè)都可處理數(shù)據(jù)或請(qǐng)求 可包含根據(jù)本發(fā)明的同步協(xié)議的服務(wù)或任務(wù)。服務(wù)器通常是可通過(guò)諸如因特網(wǎng)或無(wú)線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)等遠(yuǎn)程網(wǎng)絡(luò)或本地 網(wǎng)絡(luò)訪問(wèn)的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻魴C(jī)進(jìn)程可以在第一計(jì)算機(jī)系統(tǒng)中活動(dòng),而服 務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系統(tǒng)中活動(dòng),它們通過(guò)通信介質(zhì)彼此通信,從而提 供分布式功能并允許多個(gè)客戶機(jī)利用服務(wù)器的信息收集能力。按照本發(fā)明的用 于同步數(shù)據(jù)組的技術(shù)的任何軟件對(duì)象都可跨多個(gè)計(jì)算設(shè)備或?qū)ο蠓植?。客戶機(jī)和服務(wù)器利用由協(xié)議層提供的功能來(lái)彼此通信。例如,超文本傳輸協(xié)議(HTTP)是結(jié)合萬(wàn)維網(wǎng)(WWW),艮卩"Web"使用的常見(jiàn)協(xié)議。通常,諸 如網(wǎng)際協(xié)議(IP)地址等計(jì)算機(jī)網(wǎng)絡(luò)地址或諸如統(tǒng)一資源定位器(URL)等其 它引用可以用于彼此標(biāo)識(shí)服務(wù)器或客戶計(jì)算機(jī)。網(wǎng)絡(luò)地址可以被稱為URL地 址??梢酝ㄟ^(guò)通信介質(zhì)來(lái)提供通信,例如客戶機(jī)和服務(wù)器可以通過(guò)TCP/IP連 接來(lái)彼此耦合以進(jìn)行大容量通信。由此,圖8示出了其中可采用本發(fā)明的、服務(wù)器通過(guò)網(wǎng)絡(luò)/總線與客戶計(jì) 算機(jī)通信的示例性聯(lián)網(wǎng)或分布式環(huán)境。更詳細(xì)而言,根據(jù)本發(fā)明,多個(gè)服務(wù)器 810a、 810b等經(jīng)由通信網(wǎng)絡(luò)/總線840互連,通信網(wǎng)絡(luò)/總線840可以是LAN、 WAN、內(nèi)聯(lián)網(wǎng)、GSM網(wǎng)絡(luò)、因特網(wǎng)等,它具有多個(gè)客戶機(jī)或遠(yuǎn)程計(jì)算設(shè)備820a、 820b、 820c、 820d、 820e等,如便攜式計(jì)算機(jī)、手持式計(jì)算機(jī)、痩客戶機(jī)、聯(lián) 網(wǎng)設(shè)備或其它設(shè)備,如VCR、 TV、烤箱、燈、加熱器等等。因此,構(gòu)想了本 發(fā)明可應(yīng)用于關(guān)于其期望同步數(shù)據(jù)的任何計(jì)算設(shè)備。例如,在其中通信網(wǎng)絡(luò)/總線840是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器810a、 810b等可以是客戶機(jī)820a、 820b、 820c、 820d、 820e等通過(guò)諸如HTTP等多 種已知協(xié)議中的任一種與其通信的web服務(wù)器。服務(wù)器810a、 810b等也可擔(dān) 當(dāng)客戶機(jī)820a、 820b、 820c、 820d、 820e等,這可以是分布式計(jì)算環(huán)境的特 性。如上所述,通信可以是有線或無(wú)線的,或者是兩者的適當(dāng)組合??蛻魴C(jī)設(shè) 備820a、 820b、 820c、 820d、 820e等可以通過(guò)或不通過(guò)通信網(wǎng)絡(luò)/總線840通 信,并可具有與其相關(guān)聯(lián)的獨(dú)立通信。例如,在TV或VCR的情況下,可能 存在或不存在其控制的網(wǎng)絡(luò)化方面。每一客戶計(jì)算機(jī)820a、 820b、 820c、 820d、820e等以及服務(wù)器計(jì)算機(jī)810a、 810b等可以具備各種應(yīng)用程序模塊或?qū)ο?135a、 135b、 135c等,并具有對(duì)各種類型的存儲(chǔ)元件或?qū)ο蟮倪B接或訪問(wèn),在 這些存儲(chǔ)元件或?qū)ο笊峡蓛?chǔ)存文件或數(shù)據(jù)流,或者可向其下載、發(fā)送或遷移文 件或數(shù)據(jù)流的各部分。計(jì)算機(jī)810a、 810b、 820a、 820b、 820c、 820d、 820e 等中的任何一個(gè)或多個(gè)可負(fù)責(zé)維護(hù)并更新數(shù)據(jù)庫(kù)830或其它存儲(chǔ)元件,諸如用 于儲(chǔ)存根據(jù)本發(fā)明處理或保存的數(shù)據(jù)的數(shù)據(jù)庫(kù)或存儲(chǔ)器830。由此,本發(fā)明可 以用于具有可訪問(wèn)計(jì)算機(jī)網(wǎng)絡(luò)/總線840并與其交互的客戶計(jì)算機(jī)820a、 820b、 820c、 820d、 820e等,以及可與客戶機(jī)計(jì)算機(jī)820a、 820b、 820c、 820d、 820e 等交互的服務(wù)器計(jì)算機(jī)810a、 810b等,以及其它類似的設(shè)備和數(shù)據(jù)庫(kù)830的 計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中。示例性計(jì)算設(shè)備如上所述,本發(fā)明適用于其中期望同步數(shù)據(jù)的任何設(shè)備。因此,應(yīng)當(dāng)理解, 構(gòu)想了供結(jié)合本發(fā)明適用的所有種類的手持式、便攜式和其它計(jì)算設(shè)備和計(jì)算 對(duì)象,g卩,在設(shè)備可同步數(shù)據(jù)或以其他方式接收、處理或存儲(chǔ)數(shù)據(jù)的任何地方。 因此,在下面的圖9中描述的以下通用遠(yuǎn)程計(jì)算機(jī)僅是一個(gè)示例,且本發(fā)明可 用具有網(wǎng)絡(luò)/總線互操作性和交互的任何客戶機(jī)來(lái)實(shí)現(xiàn)。由此,本發(fā)明可在其中蘊(yùn)含了極少或最小客戶機(jī)資源的聯(lián)網(wǎng)的主存服務(wù)的環(huán)境,例如其中客戶機(jī)設(shè)備 僅用作到網(wǎng)絡(luò)/總線的接口一如置于電器中的對(duì)象一的聯(lián)網(wǎng)環(huán)境中實(shí)現(xiàn)。盡管并不是必需的,但本發(fā)明可以部分地經(jīng)由操作系統(tǒng)來(lái)實(shí)現(xiàn),以供設(shè)備 或?qū)ο蟮姆?wù)開(kāi)發(fā)者使用,和/或被包括在結(jié)合本發(fā)明的組件操作的應(yīng)用軟件 中。軟件可以在由諸如客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī) 執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù) 人員可以理解,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置和協(xié)議來(lái)實(shí)施。圖9由此示出了其中可實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境900a的一個(gè)示 例,但如以上清楚地描述的,計(jì)算系統(tǒng)環(huán)境900a僅為用于介質(zhì)設(shè)備的合適的 計(jì)算環(huán)境的一個(gè)示例,并非旨在對(duì)本發(fā)明的使用范圍或功能提出任何局限。也 不應(yīng)將計(jì)算系統(tǒng)900a解釋為對(duì)示例性操作環(huán)境900a中示出的任一組件或其組 合具有任何依賴性或需求。參見(jiàn)圖9,用于實(shí)現(xiàn)本發(fā)明的示例性遠(yuǎn)程設(shè)備包括計(jì)算機(jī)910a形式的通用計(jì)算設(shè)備。計(jì)算機(jī)910a的組件可以包括,但不限于,處理單元920a、系統(tǒng) 存儲(chǔ)器930a、和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元920a 的系統(tǒng)總線921a。系統(tǒng)總線921a可以是數(shù)種類型的總線結(jié)構(gòu)中的任一種,包 括存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一 種的局部總線。計(jì)算機(jī)910a通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由 計(jì)算機(jī)910a訪問(wèn)的任何可用介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)可以 包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī) 可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易 失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于, RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CDROM、數(shù)字多功能盤(pán) (DVD)或其它光盤(pán)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以 用來(lái)儲(chǔ)存所需信息并可由計(jì)算機(jī)910a訪問(wèn)的任何其它介質(zhì)。通信介質(zhì)通常以 諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié) 構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳送介質(zhì)。系統(tǒng)存儲(chǔ)器930a可以包括諸如只讀存儲(chǔ)器(ROM)和/或隨機(jī)存取存儲(chǔ)器 (RAM)等易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)?;据斎?輸出 系統(tǒng)(BIOS)可被存儲(chǔ)在存儲(chǔ)器930a中,它包含幫助在諸如啟動(dòng)期間在計(jì)算 機(jī)910a內(nèi)的元件之間傳遞信息的基本例程。存儲(chǔ)器930a通常還包含處理單元 920a可以立即訪問(wèn)和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局 限,存儲(chǔ)器930a還可以包括操作系統(tǒng)、應(yīng)用程序、其它程序模塊、和程序數(shù) 據(jù)。計(jì)算機(jī)910a也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存 儲(chǔ)介質(zhì)。例如,計(jì)算機(jī)910a可以包括對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫(xiě) 的硬盤(pán)驅(qū)動(dòng)器,對(duì)可移動(dòng)、非易失性磁盤(pán)進(jìn)行讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,和/或?qū)χT如 CD-ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤(pán)進(jìn)行讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。可 以在示例性操作環(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī) 存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài) RAM、固態(tài)ROM等等。硬盤(pán)驅(qū)動(dòng)器通常由諸如接口等不可移動(dòng)存儲(chǔ)器接口連接至系統(tǒng)總線921a,而磁盤(pán)驅(qū)動(dòng)器或光盤(pán)驅(qū)動(dòng)器通常由諸如接口等可移動(dòng)存儲(chǔ) 器接口連接至系統(tǒng)總線921a。用戶可以通過(guò)輸入設(shè)備,如鍵盤(pán)和定點(diǎn)設(shè)備(通常指鼠標(biāo)、跟蹤球或觸摸 板)向計(jì)算機(jī)910a輸入命令和信息。其它輸入設(shè)備可以包括話筒、操縱桿、 游戲手柄、圓盤(pán)式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常由耦合至 系統(tǒng)總線921a的用戶輸入940a和相關(guān)聯(lián)的接口連接到處理單元920a,但是也 可由諸如并行端口、游戲端口或通用串行總線(USB)之類的其它接口和總線 結(jié)構(gòu)連接。圖形子系統(tǒng)也可以被連接到系統(tǒng)總線921a。監(jiān)視器或其它類型的顯 示設(shè)備也通過(guò)接口,如輸出接口 950a連接至系統(tǒng)總線921a,而輸出接口 950a 又與視頻存儲(chǔ)器通信。除監(jiān)視器之外,計(jì)算機(jī)還可以包括其它外圍輸出設(shè)備, 如揚(yáng)聲器和打印機(jī),它們可以通過(guò)輸出接口 950a連接。計(jì)算機(jī)910a可使用至諸如遠(yuǎn)程計(jì)算機(jī)970a等的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的 邏輯連接在網(wǎng)絡(luò)化或分布式環(huán)境中操作,遠(yuǎn)程計(jì)算機(jī)970a又可以具有與設(shè)備 910a不同的介質(zhì)能力。遠(yuǎn)程計(jì)算機(jī)970a可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、 網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)的網(wǎng)絡(luò)節(jié)點(diǎn)、或任何其它遠(yuǎn)程介質(zhì)消費(fèi)或傳輸 設(shè)備,并且可以包括上面關(guān)于計(jì)算機(jī)910a所描述的任何或全部元件。圖9所 示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)等的網(wǎng)絡(luò)971a,但 也可以包括其它網(wǎng)絡(luò)/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計(jì)算機(jī) 網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見(jiàn)的。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)910a通過(guò)網(wǎng)絡(luò)接口或適配器連接至 LAN 971a。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)910a通常包括通信組件, 諸如調(diào)制解調(diào)器或用于通過(guò)諸如因特網(wǎng)等的WAN建立通信的其它裝置。諸如 調(diào)制解調(diào)器等通信組件可以是內(nèi)置或外置的,它可以通過(guò)輸入940a的用戶輸 入接口或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線921a。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算 機(jī)910a所描述的程序模塊或其部分可被儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢?理解,所示和所述的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信 鏈路的其它手段。示例性分布式計(jì)算體系結(jié)構(gòu)鑒于個(gè)人計(jì)算和因特網(wǎng)的交匯,已經(jīng)開(kāi)發(fā)且正在開(kāi)發(fā)各種分布式計(jì)算框架。個(gè)人和企業(yè)用戶同樣地配備用于應(yīng)用程序和計(jì)算設(shè)備的無(wú)縫互操作和啟用
web的接口,使得計(jì)算活動(dòng)越來(lái)越面向web瀏覽器和網(wǎng)絡(luò)。
例如,MICROSOFT 的托管代碼平臺(tái),即.NET包括服務(wù)器、諸如基于 web的數(shù)據(jù)存儲(chǔ)等構(gòu)建塊服務(wù)、以及可下載設(shè)備軟件。 一般而言,.NET平臺(tái) 提供(1)令整個(gè)范圍的計(jì)算設(shè)備共同工作并在所有設(shè)備上自動(dòng)更新并同步用 戶信息的能力,(2)提高的網(wǎng)頁(yè)交互能力,通過(guò)大量使用XML而不是HTML 來(lái)實(shí)現(xiàn),(3)以從用于管理各種諸如電子郵件的應(yīng)用程序或諸如Office.NET 的軟件的中央起點(diǎn)到用戶的定制產(chǎn)品和服務(wù)的訪問(wèn)和傳送為特點(diǎn)的在線服務(wù), (4)集中式數(shù)據(jù)存儲(chǔ),將增加對(duì)信息訪問(wèn)以及用戶和設(shè)備間的信息同步的效 率和簡(jiǎn)易性,(5)集成各種通信介質(zhì),如電子郵件、傳真和電話的能力,(6) 對(duì)開(kāi)發(fā)人員來(lái)說(shuō),創(chuàng)建可重用模塊的能力,由此提高生產(chǎn)力并降低編程差錯(cuò)的 數(shù)量,以及(7)許多其它跨平臺(tái)和語(yǔ)言綜合特性。
盡管此處的某些示例性實(shí)施例是結(jié)合諸如應(yīng)用程序編程接口 (API)等駐 留在計(jì)算設(shè)備上的軟件來(lái)描述的,但本發(fā)明的一個(gè)或多個(gè)部分也可以通過(guò)操作 系統(tǒng)、"中間人"對(duì)象、控制對(duì)象、硬件、固件、中間語(yǔ)言指令或?qū)ο蟮葋?lái) 實(shí)現(xiàn),使得根據(jù)本發(fā)明的用于通信的方法可被包括在由諸如.NET代碼等托管 代碼啟用的所有語(yǔ)言和服務(wù)中,以及在其它分布式計(jì)算框架中,在其中得到支 持或經(jīng)由它們來(lái)訪問(wèn)。
有多種實(shí)現(xiàn)本發(fā)明的方法,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動(dòng)程序代碼、操 作系統(tǒng)、控件、獨(dú)立或可下載軟件對(duì)象等,它們使得應(yīng)用程序和服務(wù)能夠使用 本發(fā)明的同步數(shù)據(jù)的系統(tǒng)和方法。本發(fā)明從API (或其它軟件對(duì)象)的觀點(diǎn)以 及從實(shí)現(xiàn)本發(fā)明的協(xié)議的軟件或硬件對(duì)象的觀點(diǎn)構(gòu)想了對(duì)本發(fā)明的用途。由 此,此處描述的本發(fā)明的各種實(shí)現(xiàn)都可以具有完全采用硬件、部分采用硬件且 部分采用軟件、以及采用軟件的方面。
在本文中使用的詞語(yǔ)"示例性"意味著用作示例、實(shí)例或說(shuō)明。為避免疑問(wèn), 本文公開(kāi)的主體不受限于這樣的示例。此外,本文描述為"示例性"的任何方面 或設(shè)計(jì)不必解釋成優(yōu)于其它方面或設(shè)計(jì)或比其它方面或設(shè)計(jì)有利,它也不旨在
排除本領(lǐng)域的普通技術(shù)人員所知的等效示例性結(jié)構(gòu)和技術(shù)。而且,就術(shù)語(yǔ)"包 括"、"具有"、"包含"和其它類似的詞語(yǔ)在詳細(xì)描述或權(quán)利要求書(shū)中使用而言,
21為避免疑問(wèn),這樣的術(shù)語(yǔ)旨在以類似于術(shù)語(yǔ)"包括"作為開(kāi)放的過(guò)渡詞的方式解 釋而不排除任何附加或其它元素。如上所述,盡管結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了本發(fā)明的示例性 實(shí)施例,但底層概念可被應(yīng)用于其中期望同步數(shù)據(jù)的任何計(jì)算設(shè)備或系統(tǒng)。盡 管此處選擇了示例性編程語(yǔ)言、名稱和示例來(lái)表示各種選擇,但這些語(yǔ)言、名 稱和示例并不旨在是限制性的。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,有多種方法 來(lái)提供實(shí)現(xiàn)本發(fā)明的各實(shí)施例所實(shí)現(xiàn)的相同、相似或等效的功能的目標(biāo)代碼和 命名法。如上所述,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時(shí)以兩者的 組合來(lái)實(shí)現(xiàn)。如在此所使用地,術(shù)語(yǔ)"組件"、"系統(tǒng)"等同樣指的是計(jì)算機(jī)相關(guān) 實(shí)體,或者是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可 以是,但不限于是,在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行碼、執(zhí)行 的線程、程序和/或計(jì)算機(jī)。作為說(shuō)明,運(yùn)行在計(jì)算機(jī)上的應(yīng)用程序和計(jì)算機(jī)本 身都可以是計(jì)算機(jī)組件。 一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行的線程中, 并且組件可以位于一個(gè)計(jì)算機(jī)內(nèi)和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。由此,本發(fā)明的方法和裝置或其特定方面或部分可采取包含在諸如軟盤(pán)、CD-ROM、硬盤(pán)驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼 (即,指令)的形式,其中當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器內(nèi)并由其執(zhí) 行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計(jì)算機(jī)上執(zhí)行 的情況下,計(jì)算設(shè)備通常包括處理器、該處理器可讀的存儲(chǔ)介質(zhì)(包括易失性 和非易失性的存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備、以及至少一個(gè)輸出 設(shè)備。可例如通過(guò)使用數(shù)據(jù)處理API、可重用控件等來(lái)實(shí)現(xiàn)或利用本發(fā)明的協(xié) 議的一個(gè)或多個(gè)程序較佳地用高級(jí)過(guò)程語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn)以 便與計(jì)算機(jī)系統(tǒng)進(jìn)行通信。然而,如果需要,程序可以用匯編語(yǔ)言或機(jī)器語(yǔ)言 來(lái)實(shí)現(xiàn)。在任何情形中,語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言,且與硬件實(shí)現(xiàn)相結(jié) 合。本發(fā)明的方法和裝置也可以經(jīng)由以通過(guò)某種傳輸介質(zhì)傳輸?shù)某绦虼a的 形式體現(xiàn)的通信來(lái)實(shí)現(xiàn),比如通過(guò)電線或電纜、通過(guò)光纖或經(jīng)由任何其它傳輸 形式,其中,當(dāng)程序代碼由諸如EPROM、門(mén)陣列、可編程邏輯器件(PLD)、客戶計(jì)算機(jī)等機(jī)器接收、加載并執(zhí)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。 當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合來(lái)提供一種用于調(diào)用本發(fā) 明的功能的獨(dú)特裝置。另外,結(jié)合本發(fā)明使用的任何存儲(chǔ)技術(shù)總是可以是硬件 和軟件的組合。
此外,所公開(kāi)的主題可以使用產(chǎn)生軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn) 編程和/或工程技術(shù)實(shí)現(xiàn)為用于控制基于計(jì)算機(jī)或處理器的設(shè)備以實(shí)現(xiàn)在此所 詳述的諸方面的系統(tǒng)、方法、裝置或制品。此處所用的術(shù)語(yǔ)"制品"(或作為替 換,"計(jì)算機(jī)程序產(chǎn)品")旨在涵蓋可從任何計(jì)算機(jī)可讀設(shè)備、載體或介質(zhì)訪問(wèn) 的計(jì)算機(jī)程序。例如,計(jì)算機(jī)可讀介質(zhì)可包括但不限于,磁存儲(chǔ)設(shè)備(例如,
硬盤(pán)、軟盤(pán)、磁帶......)、光盤(pán)(例如,緊致盤(pán)(CD)、數(shù)字多功能盤(pán)(DVD)......)、
智能卡、以及閃存設(shè)備(例如,卡、棒)。另外,已知可以采用載波來(lái)承載計(jì) 算機(jī)可讀電子數(shù)據(jù),例如那些用于發(fā)送和接收電子郵件或用于訪問(wèn)如因特網(wǎng)或
局域網(wǎng)(LAN)等網(wǎng)絡(luò)的數(shù)據(jù)。
已經(jīng)關(guān)于若干組件之間的交互描述了前述系統(tǒng)。應(yīng)該理解,這樣的系統(tǒng)和 組件可以包括那些組件或子組件,所指定組件或子組件中的一些和/或另外的組 件,并根據(jù)前述的各種排列和組合。子組件也可以被實(shí)現(xiàn)為通信耦合至其它組 件而非被包括在父組件(分層)內(nèi)的組件。另外,應(yīng)注意到一個(gè)或多個(gè)組合可 被組合成提供聚集功能的單個(gè)組件,或被分成若干單獨(dú)的子組件,且諸如管理 層的任何一個(gè)或多個(gè)中間層可被設(shè)置成通信耦合到這樣的子組件以便提供集 成功能。此處描述的任何組件也可以與在此未具體描述但本領(lǐng)域的技術(shù)人員公 知的一個(gè)或多個(gè)其他組件交互。
考慮到以上描述的示例性系統(tǒng),參考圖2、 3和7的流程圖將可以更好地 理解根據(jù)所公開(kāi)的主題來(lái)實(shí)現(xiàn)的方法。盡管出于說(shuō)明簡(jiǎn)單的目的,各方法被顯 示和描述為一系列框,但應(yīng)該理解和領(lǐng)會(huì),所要求保護(hù)的主題不受框次序的限 制,因?yàn)橐恍┛蚰軌蛞圆煌拇涡蚝?或與在此描繪和描述的其它框同時(shí)發(fā)生。 盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實(shí)現(xiàn)達(dá)成相同或 類似結(jié)果的各種其它分支、流程路徑和框次序。而且,并非所有示出的框都是 實(shí)現(xiàn)以下描述的方法所必需的。
此外,應(yīng)該明白以上公開(kāi)的系統(tǒng)以及以下方法的不同部分可以包括或包含人工智能或基于知識(shí)或規(guī)則的組件、子組件、進(jìn)程、裝置、方法或機(jī)制(例如, 支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯置信網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引 擎、分類器等)。這樣的組件和其它組件可以自動(dòng)化執(zhí)行某些機(jī)制或進(jìn)程,由 此使得系統(tǒng)和方法的各部分更為自適應(yīng)、高效及智能。盡管已結(jié)合各個(gè)附圖的優(yōu)選實(shí)施方式對(duì)本發(fā)明進(jìn)行了描述,但是可以理 解,可以使用其它類似的實(shí)施方式或可以對(duì)所描述的實(shí)施方式進(jìn)行修改或添加 以實(shí)現(xiàn)本發(fā)明的相同功能而不背離本發(fā)明。例如,盡管在諸如對(duì)等聯(lián)網(wǎng)環(huán)境等 聯(lián)網(wǎng)環(huán)境的上下文中描述了本發(fā)明的示例性網(wǎng)絡(luò)環(huán)境,但是本領(lǐng)域的技術(shù)人員 將認(rèn)識(shí)到,本發(fā)明不限于此,并且本申請(qǐng)中所描述的方法可應(yīng)用于任何計(jì)算設(shè) 備或環(huán)境,諸如游戲控制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等等,不論其是有 線還是無(wú)線的,并且該方法可應(yīng)用于經(jīng)由通信網(wǎng)絡(luò)連接并通過(guò)網(wǎng)絡(luò)交互的任意 數(shù)量的此類計(jì)算設(shè)備。此外,應(yīng)當(dāng)強(qiáng)調(diào),構(gòu)想了包括手持式設(shè)備操作系統(tǒng)和其 它專用操作系統(tǒng)的各種計(jì)算機(jī)平臺(tái),尤其是在無(wú)線聯(lián)網(wǎng)設(shè)備的數(shù)量持續(xù)增長(zhǎng) 時(shí)。盡管各示例性實(shí)施例涉及在特定編程語(yǔ)言構(gòu)造的上下文中利用本發(fā)明,但 是本發(fā)明不限于此,而是可用任何語(yǔ)言實(shí)現(xiàn)來(lái)提供本發(fā)明的同步通信協(xié)議和方 法。而且,本發(fā)明可以在多個(gè)處理芯片或設(shè)備中實(shí)現(xiàn)或跨多個(gè)處理芯片或設(shè)備 實(shí)現(xiàn),且存儲(chǔ)可以類似地跨多個(gè)設(shè)備來(lái)實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個(gè) 實(shí)施例,而是應(yīng)該根據(jù)所附權(quán)利要求書(shū)的廣度和范圍來(lái)解釋。
權(quán)利要求
1.一種用于在服務(wù)器S和至少一個(gè)客戶機(jī)C之間同步至少一個(gè)數(shù)據(jù)組的方法,包括至少一個(gè)客戶機(jī)C連接到所述服務(wù)器S以便與所述服務(wù)器S的至少一個(gè)數(shù)據(jù)組的數(shù)據(jù)同步200;以及所述至少一個(gè)客戶機(jī)C請(qǐng)求與所述至少一個(gè)數(shù)據(jù)組同步200,其中所述請(qǐng)求包括將由所述至少一個(gè)客戶機(jī)C維護(hù)的、使得所述服務(wù)器S能夠確定所述至少一個(gè)客戶機(jī)C的同步狀態(tài)的同步元數(shù)據(jù)從所述至少一個(gè)客戶機(jī)C發(fā)送到所述服務(wù)器S。
2. 如權(quán)利要求1所述的方法,其特征在于,所述請(qǐng)求200還包括將自先前 的同步時(shí)間以來(lái)發(fā)生在所述至少一個(gè)客戶機(jī)C上的對(duì)所述至少一個(gè)數(shù)據(jù)組的 改變從所述至少一個(gè)客戶機(jī)C發(fā)送到所述服務(wù)器S 225。
3. 如權(quán)利要求1所述的方法,其特征在于,還包括 根據(jù)傳輸不可知協(xié)議來(lái)接收對(duì)由所述至少一個(gè)客戶機(jī)C維護(hù)的至少一個(gè)數(shù)據(jù)組的客戶機(jī)C側(cè)版本的更新275。
4. 如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)web服務(wù)協(xié)議來(lái)接收對(duì)由所述至少一個(gè)客戶機(jī)C維護(hù)的至少一個(gè)數(shù) 據(jù)組的客戶機(jī)C側(cè)版本的更新275。
5. 如權(quán)利要求1所述的方法,其特征在于,還包括 在所述至少一個(gè)客戶機(jī)C上生成同步錨210。
6. 如權(quán)利要求5所述的方法,其特征在于,還包括.-響應(yīng)于從所述服務(wù)器S接收到的對(duì)所述請(qǐng)求的確認(rèn)來(lái)將所述同步錨持久存儲(chǔ)在所述至少一個(gè)客戶機(jī)C上250。
7. 如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)允許具有不同特征的多個(gè)錨數(shù)據(jù)類型的可擴(kuò)展錨模型來(lái)從所述服務(wù) 器S接收同步錨275。
8. 如權(quán)利要求1所述的方法,其特征在于,還包括接收如由所述服務(wù)器S確定的一組同步?jīng)_突235并且所述客戶機(jī)C根據(jù)至少一個(gè)沖突解決策略來(lái)處理所述那組同步?jīng)_突。
9. 如權(quán)利要求1所述的方法,其特征在于,還包括所述至少一個(gè)客戶機(jī)c基于對(duì)所述至少一個(gè)數(shù)據(jù)組的許可來(lái)訂閱所述至 少一個(gè)數(shù)據(jù)組320。
10. —種承載用于執(zhí)行如權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令的 計(jì)算機(jī)可讀介質(zhì)。
11. 一種計(jì)算設(shè)備,包括同步代理程序130,其用于發(fā)起與在服務(wù)器S處維護(hù)的至少一個(gè)數(shù)據(jù)集的 同步,其中所述同步代理程序130在所述至少一個(gè)數(shù)據(jù)集的模式不可由所述計(jì) 算設(shè)備訪問(wèn)的情況下自動(dòng)取得所述模式;以及用于存儲(chǔ)所述服務(wù)器S的至少一個(gè)數(shù)據(jù)集的本地版本的存儲(chǔ)裝置110。
12. 如權(quán)利要求11所述的計(jì)算設(shè)備,其特征在于,所述同步代理程序 130從所述服務(wù)器S中發(fā)現(xiàn)所述計(jì)算設(shè)備被準(zhǔn)許與其同步的至少一個(gè)數(shù)據(jù)集。
13. 如權(quán)利要求11所述的計(jì)算設(shè)備,其特征在于,所述同步代理程序 130在所述計(jì)算設(shè)備連接到所述服務(wù)器S時(shí)發(fā)起同步。
14. 如權(quán)利要求ll所述的計(jì)算設(shè)備,其特征在于,所述同步代理程序 130從所述存儲(chǔ)裝置110收集同步元數(shù)據(jù),將改變上傳到服務(wù)器S數(shù)據(jù)庫(kù)以及從所述服務(wù)器S數(shù)據(jù)庫(kù)下載改變。
15. 如權(quán)利要求ll所述的計(jì)算設(shè)備,其特征在于,還包括-客戶機(jī)C應(yīng)用程序,其與所述同步代理程序130進(jìn)行通信以便與所述服務(wù)器S的至少一個(gè)數(shù)據(jù)集同步,其中所述同步代理程序130將錯(cuò)誤、進(jìn)展和沖 突事件傳播到所述客戶機(jī)C應(yīng)用程序。
16. —種用于在服務(wù)器S和松耦合客戶機(jī)C之間同步至少一個(gè)數(shù)據(jù)組的方法,包括從客戶機(jī)c接收包括用于確定所述客戶機(jī)c的同步狀態(tài)的同步元數(shù)據(jù)的對(duì)與所述服務(wù)器S的至少一個(gè)同步組同步的請(qǐng)求700;對(duì)于所述至少一個(gè)同步組中的每一個(gè)同步組,從所述客戶機(jī)C接收對(duì)所述同步組的任何改變710;基于所述改變來(lái)更新所述服務(wù)器S的至少一個(gè)同步組710,包括確定 所述改變所呈現(xiàn)的任何沖突720;以及將對(duì)處理所述請(qǐng)求和所述沖突的確認(rèn)發(fā)送到所述客戶機(jī)C以供由所 述客戶機(jī)C來(lái)進(jìn)行沖突處理730。
17. 如權(quán)利要求16所述的方法,其特征在于,還包括 基于對(duì)從所述客戶機(jī)C接收到的同步元數(shù)據(jù)的分析,枚舉對(duì)發(fā)送到所述客戶機(jī)C的至少一個(gè)同步組的客戶機(jī)C側(cè)改變740,這使得所述客戶機(jī)C能夠 更新所述至少一個(gè)同步組的客戶機(jī)C版本。
18. 如權(quán)利要求17所述的方法,其特征在于,還包括 將客戶機(jī)C側(cè)改變作為數(shù)據(jù)集對(duì)象來(lái)發(fā)送到所述客戶機(jī)C 740。
19. 如權(quán)利要求16所述的方法,其特征在于,還包括 根據(jù)允許具有不同特征的多個(gè)錨數(shù)據(jù)類型的可擴(kuò)展錨模型來(lái)將同步錨從所述服務(wù)器S發(fā)送到所述客戶機(jī)C 750。
20.—種承載用于執(zhí)行如權(quán)利要求16所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
全文摘要
提供了一種供在松耦合客戶機(jī)的上下文中使用的傳輸不可知同步協(xié)議。該同步協(xié)議啟用無(wú)狀態(tài)服務(wù)器,其使該服務(wù)器從維護(hù)曾經(jīng)縮放的客戶機(jī)的同步狀態(tài)中解放。提供了一種供客戶機(jī)獲悉對(duì)于服務(wù)器所提供的各組數(shù)據(jù)的不同的同步服務(wù)的可發(fā)現(xiàn)性服務(wù)以使得客戶機(jī)可選擇或訂閱感興趣的同步組,并且該協(xié)議用客戶機(jī)所訂閱的未知的任何數(shù)據(jù)結(jié)構(gòu)的任何模式來(lái)初始化該客戶機(jī)。此外,該協(xié)議啟用了一種可擴(kuò)展同步錨模型,其在客戶機(jī)和服務(wù)器之間傳輸錨類型而無(wú)需假設(shè)客戶機(jī)數(shù)據(jù)機(jī)構(gòu)允許各種各樣的錨數(shù)據(jù)類型和功能。
文檔編號(hào)G06F15/16GK101583939SQ200780049202
公開(kāi)日2009年11月18日 申請(qǐng)日期2007年12月28日 優(yōu)先權(quán)日2007年1月3日
發(fā)明者R·羅貝爾, S·A·奇特, S·M·拉斯克 申請(qǐng)人:微軟公司