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

用于偶爾連接的應用程序的同步框架的制作方法

文檔序號:6476368閱讀:224來源:國知局
專利名稱:用于偶爾連接的應用程序的同步框架的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于在客戶機可無限期地中斷與服務器的聯(lián)系的情況下在 客戶機和服務器數(shù)據(jù)存儲之間同步數(shù)據(jù)的同步框架,例如用于離線應用程 序的同步框架。
站旦 冃豕
常規(guī)上,從同步觀點來看,在客戶機和服務器之間已經(jīng)實現(xiàn)了固定關(guān) 系,并且所以數(shù)據(jù)同步是在客戶機和服務器之間硬連線且專用的,結(jié)果限 制了靈活性和可伸縮性。另外,在客戶機由于網(wǎng)絡不可用性、斷電、或某 一其它原因而可能從服務器斷開連接的情況下,還應當有一種方式來繼續(xù) 進行而不管該斷開連接,即在客戶機應用程序從主服務器離線時。當今, 如在單個客戶機和服務器之間一樣,該離線行為或者是不可用的或者是固
定的,即根據(jù)在靈活性和可伸縮性上也具有限制的靜態(tài)行為來執(zhí)行。
此外,常規(guī)上,這些或是離線或是在線的專用同步關(guān)系都遭受著在根 據(jù)固定的或嚴格的同步框架傳遞同步數(shù)據(jù)時所維護和利用的同步數(shù)據(jù)類型 的復雜度,這些同步框架通常依賴于存儲中存在的特定數(shù)據(jù)庫格式,從而 導致同步不兼容問題。更為復雜的是,在允許多個客戶機進入和退出與服 務器的聯(lián)系時,保證適當?shù)耐胶蛷椭谱兊糜绕鋸碗s,通常對維護與所有 客戶機的同步關(guān)系的服務器造成過大的成本。
一般而言,偶爾連接的應用程序被定義為連接到諸如數(shù)據(jù)庫、web服 務等遠程數(shù)據(jù)源來讀/寫該應用程序的運作所需的數(shù)據(jù)的應用程序。另外, 這些應用程序具有即使它們離線,即未連接到遠程數(shù)據(jù)源也繼續(xù)無縫地工 作的要求。離線工作的原因可以是網(wǎng)絡的不可用性或為了更好的數(shù)據(jù)訪問 性能。
用于構(gòu)建同步關(guān)系數(shù)據(jù)的應用程序的現(xiàn)有系統(tǒng)包括遠程數(shù)據(jù)訪問 (RDA)、合并復制(Merge Replication)和ADO.NET數(shù)據(jù)集。然而,RDA和合并復制提供端對端解決方案而非構(gòu)件塊,并被綁定到服務器和客戶機 兩側(cè)的數(shù)據(jù)存儲格式。對于現(xiàn)有系統(tǒng)上的限制的另一示例,RDA只可以在
客戶機是微軟的SQL Server緊湊版并且服務器是微軟SQL Server時使用。 另外,盡管ADO.NET斷開連接數(shù)據(jù)集未綁定到存儲,但它們具有其它限 制,如它們要求整個加載到存儲器中、沒有從服務器下載增量變更的任何 能力。
因此,現(xiàn)有解決方案處于該領(lǐng)域的相對端。在一端處,像RDA和 ADO.NET等解決方案是簡單的,但它們具有很有限的特征,例如,它們不 支持下載增量數(shù)據(jù)。就此,對于每一同步,從服務器向客戶機發(fā)送所有數(shù) 據(jù)尤其在慢鏈路上是昂貴的。RDA還要求客戶機數(shù)據(jù)庫是SQL客戶機并且
數(shù)據(jù)集未被客戶機數(shù)據(jù)庫備份,所以它們?nèi)鄙賹Ω咚倬彺娴挠行Р樵兡芰Α?而在該領(lǐng)域的另一端,像合并復制等解決方案盡管提供諸如動態(tài)過濾和邏 輯記錄等豐富的特征,但過于復雜和嚴格,從而向開發(fā)者提供很小的靈活
性來定制解決方案以滿足其自身的需求。對于向合并等解決方案,開發(fā)者 要么得到所有要么一無所獲。因此,需要可通用的同步框架,其包括用于 構(gòu)建適合被部署的應用程序的功能和上下文的定制的同步應用程序的構(gòu)件 塊。
當今,就任何系統(tǒng)嘗試解決對多個客戶機的同步而言,解決方案限于 將數(shù)據(jù)庫信息的整個集合復制到所有客戶機,并且沒有選擇性地同步該數(shù) 據(jù)庫信息的一個或多個子集的方式,例如在客戶機可能想要只與相關(guān)數(shù)據(jù) 的一小部分進行同步的情況下。例如,客戶機可能想要只檢索上個月的電 子郵件,而非整個電子郵件數(shù)據(jù)庫文件,但目前,沒有在不重新配置同步
來以新的靜態(tài)方式同步另一數(shù)據(jù)集的情況下任意地或動態(tài)地限制或過濾在 客戶機和服務器之間同步的數(shù)據(jù)的方式。
因此,為從服務器向若干客戶機或以相反方向同步數(shù)據(jù)存儲中的數(shù)據(jù), 更新或變更的同步和復制必須在各設備之間發(fā)生。因此,所需的是解決以 上所標識的服務器和松耦合客戶機之間的數(shù)據(jù)同步和復制的現(xiàn)有技術(shù)中的 每一個問題的同步框架。例如,通過實現(xiàn)能夠與開發(fā)者已經(jīng)熟悉的概念和 數(shù)據(jù)類型一起工作并對其進行處理的組件而使其對應用程序開發(fā)者變得簡單的框架是合乎需要的。另外,需要這樣一種同步框架其允許在各種松 耦合設備進入和退出與該服務器的聯(lián)系時,用于這些設備的高度可伸縮服 務器,并且其獨立于數(shù)據(jù)庫格式來操作。
因此,考慮到服務器和松耦合客戶機之間的數(shù)據(jù)同步的現(xiàn)有技術(shù)不夠 完善,期望為服務器和客戶機提供一種改進的同步框架。松耦合設備的上 下文中的現(xiàn)有同步技術(shù)中的這些和其它缺陷在描述了將在以下更詳細地闡 述的本發(fā)明的各示例性、非限制性實施例后將變得顯而易見。
概述
本發(fā)明提供一種用于在服務器和可離線的客戶機之間同步數(shù)據(jù)組的同 步框架。該框架包括以存儲格式無關(guān)的方式接口到客戶機存儲的客戶機同 步提供者組件、收集客戶機所維護的同步元數(shù)據(jù)并向服務器存儲上傳和/或 從中下載對數(shù)據(jù)組的變更的同步代理程序組件、以及獨立于存儲格式經(jīng)由 同步適配器接口到服務器存儲的服務器同步提供者組件。該框架提供用于 構(gòu)建根據(jù)默認應用程序同步場景來表現(xiàn)的離線同步應用程序的默認構(gòu)件 塊,并且還允許用于自定義離線應用程序同步場景的自定義構(gòu)件塊。
此處提供了簡化概述以幫助能夠?qū)σ韵赂敿毜拿枋龊透綀D中的示例 性、非限制性實施例的各方面有基本或大體的理解。然而,本概述并不旨 在作為詳盡的或窮盡的概觀。相反,本概述的唯一目的是以簡化的形式來 介紹與本發(fā)明的某些示例性非限制性實施例相關(guān)的一些概念,作為以下本 發(fā)明的各實施例的更為詳細的描述的序言。
附圖簡述
參考附圖進一步描述本發(fā)明的同步框架,在附圖中


圖1A和1B是根據(jù)本發(fā)明的用于與離線應用程序同步的框架體系結(jié)構(gòu) 的框圖2A、 2B、 2C和2D是作為本發(fā)明的框架的一部分來提供的各構(gòu)件 塊的非限制性實現(xiàn)的框圖3A、 3B、 3C和3D是示出根據(jù)本發(fā)明的框架的各同步場景的示例性、非限制性實現(xiàn)的流程圖4和圖5示出根據(jù)本發(fā)明的框架的在沒有關(guān)于客戶機或服務器側(cè)存 儲結(jié)構(gòu)的先驗知識的情況下在客戶機和服務器之間來回傳遞數(shù)據(jù)結(jié)構(gòu)的示 例性、非限制性數(shù)據(jù)集實現(xiàn);
圖6示出本發(fā)明的同步框架對于例如作為輻射同步模型的一部分的許 多客戶機的可伸縮性;
圖7A和7B是實現(xiàn)本發(fā)明的分別從客戶機和服務器的觀點來看的用于 同步的示例性、非限制性過程的流程圖8是示出本發(fā)明的可擴展同步錨模型的各示例性方面的框圖9是表示其中可實現(xiàn)本發(fā)明的示例性、非限制性網(wǎng)絡化環(huán)境的框以及
圖IO是表示其中可實現(xiàn)本發(fā)明的示例性、非限制性計算系統(tǒng)或操作環(huán) 境的框圖。
詳細描述
概觀
如在背景中所討論的,現(xiàn)有同步解決方案實現(xiàn)過度復雜的對象模型, 過于緊耦合以至于無法用于離線應用程序,并且其可伸縮性由于服務器開 銷而受到限制。因此,考慮到現(xiàn)有技術(shù)中的這些缺陷,本發(fā)明提供了供在 服務器和松耦合客戶機的上下文中使用的同步框架及相應方法。
如上所述,偶爾連接的應用程序被定義為連接到諸如數(shù)據(jù)庫、web服 務等遠程數(shù)據(jù)源來讀/寫該應用程序的運作所需的數(shù)據(jù)的應用程序。另外, 這些應用程序具有即使它們離線,即未連接到遠程數(shù)據(jù)源也繼續(xù)無縫地工 作的要求。離線工作的原因可以是網(wǎng)絡的不可用性或為了更好的數(shù)據(jù)訪問 性能。
根據(jù)本發(fā)明的各非限制性實施例,向偶爾連接的應用程序提供在其離 線時保持該數(shù)據(jù)的數(shù)據(jù)高速緩存和在網(wǎng)絡可用時將該高速緩存與遠程存儲 進行同步的機制。如在背景中所討論的,當今存在的任何解決方案都不適 用于構(gòu)建自定義同步應用程序。因此,本發(fā)明提供了一種包括用于為各種客戶機/服務器同步場景構(gòu)建定制的同步應用程序的構(gòu)件塊的同步框架。
在以下更詳細地描述的各非限制性實施例中,本發(fā)明為開發(fā)者提供了 構(gòu)建偶爾連接的應用程序的一組構(gòu)件塊。該框架包括非??焖俚貥?gòu)建簡單 同步解決方案的組件,同時還具有使用這些構(gòu)件塊來構(gòu)建復雜解決方案的 完全靈活性。
如以下詳細描述的,以下是因該框架而變得可能的場景的示例性、非 限制性列表(A)客戶機上的數(shù)據(jù)的只讀高速緩存,即快照同步,(B)帶有 保持高速緩存最新的增量同步的客戶機上的數(shù)據(jù)的只讀高速緩存,即增量 下載同步,(C)從客戶機到服務器的存儲和轉(zhuǎn)發(fā)能力,即只上傳同步,(D)對 客戶機上的數(shù)據(jù)的讀寫高速緩存,即雙向同步,其具有支持對多個客戶機 變更同一數(shù)據(jù)的沖突檢測和解決的框架,(E)在不需要在服務器側(cè)進行任
何供應的情況下與預先存在的服務器同步,(F)與例如SQL、 Oracle等異構(gòu) 服務器同步,(G)與自定義的啟用因特網(wǎng)的服務同步,(H)插入例如SQL Server緊湊版、SQL Express等不同的客戶機存儲的能力,(I)在客戶機和 服務器之間插入自定義傳輸?shù)哪芰?,以?J)在存儲上插入自定義變更跟蹤 的能力。
用于離線應用程序的同步框架
根據(jù)本發(fā)明提供了可被用來開發(fā)和支持離線應用程序的同步框架。用 于同步離線應用程序的數(shù)據(jù)的同步框架的概覽在圖IA和圖IB的示例性、 非限制性框圖中示出。
如在圖1A的框圖中概括所示,提供了用于在客戶機應用程序可斷開連 接的場景中同步服務器數(shù)據(jù)庫190的數(shù)據(jù)和客戶機數(shù)據(jù)庫110的數(shù)據(jù)的同 步框架SyncFW。在客戶機側(cè),在框架中提供了組件125,其指定如何發(fā)送 /接收客戶機側(cè)同步數(shù)據(jù)并使得通信獨立于客戶機數(shù)據(jù)庫110的格式。例如, 組件125可以插入不同的客戶機存儲中(例如SQL Server緊湊版、SQL Express等)。
在服務器側(cè),提供了組件155,其指定如何發(fā)送/接收服務器側(cè)同步數(shù) 據(jù)并且也獨立于服務器數(shù)據(jù)庫190的格式來通信,從而啟用與例如SQL、 Oracle等異構(gòu)服務器同步的能力。有利的是,客戶機和服務器之間的同步數(shù)據(jù)的編制(orchestration) 145 以傳輸無關(guān)的方式來處理,即無論web服務、RSS等,數(shù)據(jù)都可以在不考 慮數(shù)據(jù)在組件125和組件155之間是如何包裝的情況下處理。在一個非限 制性實施例中,數(shù)據(jù)在客戶機應用程序和自定義設計的web服務之間同步。 有利的是,本發(fā)明因而包括在客戶機和服務器之間插入自定義傳輸?shù)哪芰Γ?并且因而本發(fā)明的框架的客戶機和服務器之間的通信不限于任何特定傳輸 手段。
圖1B描繪根據(jù)本發(fā)明的同步框架和體系結(jié)構(gòu)的各組件的更詳細的視 圖。在客戶機側(cè),該同步框架由同步代理程序組件130來編制。就此,注 意,本發(fā)明的同步框架所實現(xiàn)的同步協(xié)議是傳輸不可知的。因此,圖1B僅 描繪了使用web服務150的一個可能的傳輸實現(xiàn),但可以替換地是RSS和 連網(wǎng)領(lǐng)域普通技術(shù)人員公知的其它傳輸機制。
位于客戶機側(cè)的同步代理程序130是核心同步引擎并實現(xiàn)用于以下各 動作的邏輯(A)從客戶機和服務器數(shù)據(jù)庫收集元數(shù)據(jù),(B)向服務器數(shù)據(jù) 庫上傳變更和從中將變更下載到客戶機提供者120,或(C)向客戶機應用程 序傳播差錯、進展和沖突事件。此外,同步代理程序130使用同步適配器 170以通過服務器同步提供者接口來與服務器數(shù)據(jù)庫190交互。另外,每一 個同步適配器170都定義對于在客戶機和服務器之間同步的每一個表的表 和列映射,并對兩個或多個表進行邏輯分組。
同步代理程序130還接受對代理程序130分別隱藏客戶機數(shù)據(jù)庫110 和服務器數(shù)據(jù)庫120細節(jié)的客戶機同步提供者120和服務器同步提供者 160。同步代理程序130接受同步組180的集合并運行隨本發(fā)明的框架所提 供的協(xié)議以使得這些組180保持同步。同步適配器170指示同步代理程序 130如何與服務器數(shù)據(jù)庫190交互。就此,同步代理程序130不直接與同步 適配器170交互,而是同步代理程序130與服務器提供者160交互,服務 器提供者160進而使用同步適配器170來連接到數(shù)據(jù)庫190。該交互通過根 據(jù)本發(fā)明的各非限制性實施例來實現(xiàn)的以下數(shù)據(jù)庫命令對象中的一個或多 個來定義插入(Insert)、更新(Update)、刪除(Delete)、選擇增量 插入(Select Incremental Inserts )、選擇增量更新(Select IncrementalUpdates)、選擇增量刪除(Select Incremental Deletes)、選擇更新沖突(Select Update Conflict)和/或選擇刪除沖突(Select Delete Conflict)命令。
根據(jù)本發(fā)明的插入命令供服務器同步提供者160用來將對客戶機數(shù)據(jù) 庫110的插入傳播至服務器數(shù)據(jù)庫l卯。
根據(jù)本發(fā)明的更新命令供服務器同步提供者160用來將對客戶機數(shù)據(jù) 庫110的更新傳播至服務器數(shù)據(jù)庫190。
根據(jù)本發(fā)明的刪除命令供服務器同步提供者160用來將對客戶機數(shù)據(jù) 庫110的刪除傳播至服務器數(shù)據(jù)庫190。
根據(jù)本發(fā)明的選擇增量插入命令供服務器同步提供者160用來枚舉自 從客戶機數(shù)據(jù)庫IIO上一次同步之后發(fā)生在服務器數(shù)據(jù)庫190上的插入。
根據(jù)本發(fā)明的選擇增量更新命令供服務器同步提供者160用來枚舉自 從客戶機數(shù)據(jù)庫IIO上一次同步之后發(fā)生在服務器數(shù)據(jù)庫190上的更新。
根據(jù)本發(fā)明的選擇增量刪除命令供服務器同步提供者160用來枚舉自 從客戶機數(shù)據(jù)庫110上一次同步之后發(fā)生在服務器數(shù)據(jù)庫190上的刪除。
根據(jù)本發(fā)明的選擇更新沖突命令供服務器同步提供者160用來獲取導 致插入、更新或刪除命令失敗的現(xiàn)有行。該命令執(zhí)行對適用的數(shù)據(jù)表中的 沖突行的查找。
根據(jù)本發(fā)明的選擇刪除沖突命令供服務器同步提供者160用來獲取導 致插入、更新或刪除命令失敗的現(xiàn)有行。在一個實施例中,該命令執(zhí)行對 邏輯刪除(tombstone)表中的沖突行的查找以找出邏輯刪除表中導致更新 命令失敗的行,但不在插入或刪除命令失敗時使用。
作為本發(fā)明的同步框架的一部分,離線應用程序可以選擇上述同步行
為中的任何一個或多個。此處所使用的實施例和示例中的某一些涉及數(shù)據(jù) 的數(shù)據(jù)庫存儲,如關(guān)系型存儲,但為了避免疑惑,客戶機或服務器數(shù)據(jù)存 儲可以是任何種類的數(shù)據(jù)存儲。
對于根據(jù)本發(fā)明的框架的服務器同步提供者160,在一個非限制性實 施例中,默認和自定義提供者160兩者都是允許的。提供默認提供者160 是為了解決常見應用場景,例如,瘦客戶機場景、富客戶機場景、SQL Server 緊湊版、SQL Server Express等。應用程序開發(fā)者和第三方還可針對較不常見的場景(例如,Access、 FoxPro、 Sybase)經(jīng)由用于自定義提供者160的 簡單框架和助手類來實現(xiàn)這一自定義提供者160。
在本發(fā)明的各非限制性實施例中,服務器同步提供者160的功能包括, 但不限于存儲關(guān)于組180的同步信息的能力、枚舉自從上一次同步之后 在數(shù)據(jù)庫190上發(fā)生的增量變更的能力、對數(shù)據(jù)庫l卯應用增量變更的能 力、檢測沖突的更新并可任選地在程序上或交互式地解決它們的能力、以 及激發(fā)(fire)進展和數(shù)據(jù)變更事件的能力。
對于同步代理140,當今需要直接連接到服務器數(shù)據(jù)庫190的解決方 案目前已經(jīng)越來越少見了,因為基于面向服務的體系結(jié)構(gòu)(SOA)的解決 方案正在日益普及。對于SOA模型,服務器195將其功能作為按需連接到 服務器195的web服務150來展示。經(jīng)由同步代理程序130,客戶機通過 因特網(wǎng)或通過企業(yè)內(nèi)的本地內(nèi)聯(lián)網(wǎng)來與web服務150交互。同步代理組件 140因此是允許構(gòu)建斷開連接的SOA解決方案的簡單接口,但如先前所強 調(diào)的,根據(jù)本發(fā)明可使用用于同步框架的任何傳輸機制。
因此,圖1B描述供在膝上型計算機100和工作站105上運行的應用程 序各自與為如服務器195所維護的服務器數(shù)據(jù)庫190中的數(shù)據(jù)定義的一個 或多個同步組180同步的示例性、非限制性同步框架。
圖2A是用于在客戶機200上快速開發(fā)離線應用程序0LA1到OLAn 并用于與服務器250的數(shù)據(jù)存儲260同步的本發(fā)明的框架的示例性、非限 制性實現(xiàn)。就此,如圖1B—樣,對于框架中的到客戶機存儲210和服務器 存儲260的通信允許存儲格式無關(guān)性,并且在服務器250和客戶機200之 間允許傳輸無關(guān)性。
有利的是,如上所述,根據(jù)本發(fā)明的離線應用程序可以實現(xiàn)自定義客 戶機同步提供者220b或默認客戶機同步提供者220a,自定義客戶機同步提 供者220b是為諸如離線應用程序OLAn等特定離線應用程序定制的,默認 客戶機同步提供者220a覆蓋諸如離線應用程序0LA1等離線應用程序所需 的各種常見同步場景。如圖1B—樣,經(jīng)由服務器同步提供者270a或270b 的接口,同步代理程序230使用同步適配器280來與服務器數(shù)據(jù)庫260進 行交互,從而根據(jù)定義的同步組290進行同步。如圖所示,服務器同步提供者也可以作為處理來自離線應用程序OLA卜'OLAn的常見已知同步場 景的默認服務器同步提供者270來提供,或可被定制為實現(xiàn)附加同步需求 的自定義服務器同步提供者270b。同步提供者220a、 220b、 270a、 270b因 而是本發(fā)明的框架的、幫助快速并高效地構(gòu)建尤其是針對此處更詳細地描 述的一組廣泛預期的各類離線行為的同步應用程序的構(gòu)件塊。
如圖2B所示,在一個非限制性實施例中,本發(fā)明的同步適配器282 通過使用或擴展數(shù)據(jù)適配器構(gòu)造來類似于微軟的ADO.NET中的數(shù)據(jù)適配 器來實現(xiàn),但為了避免疑惑,本發(fā)明并不限于類似數(shù)據(jù)適配器的實現(xiàn)。如 圖所示,服務器同步提供者270與ADO.NET數(shù)據(jù)適配器282進行接口, ADO.NET數(shù)據(jù)適配器282又關(guān)于服務器250的定義的同步組290與服務器 存儲260通信。將同步集成到ADO.NET編程模型中的方法允許熟悉 ADO.NET的開發(fā)者用最小的學習來構(gòu)建同步應用程序,因為SyncAdapter (同步適配器)類的設計是基于ADO.NET數(shù)據(jù)適配器(DataAdapter)類 的。
如圖2C所示,在另一非限制性實施例中,對SQL Server緊湊版客戶 機啟用默認客戶機同步提供者222以代表客戶機200c上的離線應用程序 215來與存儲212,即SQL Server緊湊版數(shù)據(jù)庫進行交互。如圖2D所示, 在又一非限制性實施例中,對客戶機啟用默認客戶機同步提供者224以代 表客戶機200d上的離線應用程序215來與文件系統(tǒng)存儲214進行交互。
本發(fā)明的框架的提供者體系結(jié)構(gòu)因而使開發(fā)者能夠使用該框架中提供 的客戶機和服務器提供者或插入自定義提供者以用于更高級的場景。本發(fā) 明的框架為開發(fā)者提供構(gòu)建例如用于"現(xiàn)用先付"體驗等偶爾連接的應用 程序的構(gòu)件塊。就此,該框架具有非常快速地構(gòu)建簡單解決方案的組件, 并且其具有使用這些構(gòu)件塊來構(gòu)建復雜解決方案的完全靈活性。
根據(jù)本發(fā)明的用于離線應用程序的同步框架允許各種默認場景。圖3A 示出本發(fā)明的框架的所允許的第一場景,其有利地允許客戶機數(shù)據(jù)庫110 指定并檢索數(shù)據(jù)子集以供應用程序使用,該應用程序可以離線并且當在線 時也只與服務器數(shù)據(jù)庫190同步該數(shù)據(jù)子集。例如,這將允許只對最近電 子郵件感興趣的電子郵件應用程序只檢索并接收該應用程序所定義的最近電子郵件的同步更新。作為來自客戶機的應用程序的對來自服務器數(shù)據(jù)庫
190的數(shù)據(jù)子集的請求(其可以是査詢)的一部分,服務器數(shù)據(jù)庫190進而
根據(jù)上述框架體系結(jié)構(gòu)返回該數(shù)據(jù)子集。
圖3A還示出同步元數(shù)據(jù)112是根據(jù)本發(fā)明在客戶機側(cè)表示的,從而通 過使服務器側(cè)免于維護關(guān)于其所有客戶機的同步元數(shù)據(jù)來允許可伸縮性。 就此,本發(fā)明的框架允許在不需要在服務器側(cè)進行任何附加供應的情況下 與預先存在的服務器同步。
根據(jù)本發(fā)明,應用程序隨后還可以離線并且只對于所返回的數(shù)據(jù)子集 來操作,并隨后當再次連接之后,客戶機可請求對于該客戶機上的數(shù)據(jù)子 集的同步更新或請求新的數(shù)據(jù)子集的同步。在任一情況下,根據(jù)該同步框 架,服務器返回所請求的更新或新子集數(shù)據(jù)。
圖3B示出可以實現(xiàn)客戶機高速緩存400以使離線應用程序在離線時可 以快速訪問高速緩存400中的數(shù)據(jù)。另外,圖3B示出所允許的另一場景是 快照同步,其中客戶機請求并接收服務器數(shù)據(jù)庫190的數(shù)據(jù)子集的快照, 該快照隨后被存儲在客戶機上的數(shù)據(jù)的只讀高速緩存中,如高速緩存400。 本發(fā)明還可任選地允許增量下載同步,其中向客戶機上的諸如高速緩存400 等只 讀高速緩存提供增量同步能力來當其在線時保持高速緩存400最新。 同樣,如圖所示,本發(fā)明允許從客戶機到服務器的存儲和轉(zhuǎn)發(fā)能力,即只 上傳同步。
如圖3C所示,本發(fā)明還允許客戶機上的數(shù)據(jù)的讀寫客戶機高速緩存, 從而提供雙向同步能力??扇芜x地,雙向同步能力包括支持在多個客戶機 變更同一數(shù)據(jù)時進行沖突檢測和解決的框架。例如,在兩個不同的客戶機 數(shù)據(jù)庫110a、110b使用不同的或沖突的數(shù)據(jù)來與服務器數(shù)據(jù)庫190同步時, 可以在服務器處執(zhí)行沖突解決195c。這確保向客戶機110a、 110b推送一致 的數(shù)據(jù)。另選地,可以向客戶機中的每一個提供沖突解決機制195a、 195b 來反映用于解決沖突的本地應用程序策略。
另外,如圖3D所示,對于其中由于在不同設備上的數(shù)據(jù)的獨立進化而 在該數(shù)據(jù)中發(fā)現(xiàn)沖突的雙向同步而言,不管在何處根據(jù)沖突解決策略處理 沖突解決195 (在客戶機數(shù)據(jù)庫110處和/或在服務器數(shù)據(jù)庫190處),本發(fā)明允許在應用同步更新之前對該數(shù)據(jù)做出本地變更的能力,例如以覆蓋 沖突檢測/解決組件195所應用的沖突解決。
在各非限制性實施例中,本發(fā)明的框架因而提供在數(shù)據(jù)存儲上插入自
定義變更跟蹤的能力。例如,用戶可能只想跟蹤對電子郵件收件箱的變更 而不跟蹤對存檔文件夾的變更。或者對于諸如醫(yī)療記錄等特定數(shù)據(jù)而言, 版本化將是很重要的,而對諸如圖像檔案等其它文件而言,版本化將不是 很重要,并且因此可以對后一組禁用變更跟蹤,并且將只對客戶機數(shù)據(jù)庫 處的需要對其進行版本化的數(shù)據(jù)子集啟用變更跟蹤。
圖4示出本發(fā)明的一示例性實施例,其中數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)400 (即, ADO.NET V2數(shù)據(jù)集(DataSet)對象)在客戶機側(cè)同步代理程序130和服 務器側(cè)同步提供者160之間傳遞。在客戶機側(cè)提供數(shù)據(jù)集接口 410以便對 數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)400進行來回轉(zhuǎn)換,并且在服務器側(cè)提供數(shù)據(jù)集接口 412 以便對數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)400進行來回轉(zhuǎn)換。另選地,如圖5所示,分別在 客戶機側(cè)和服務器側(cè)上的數(shù)據(jù)集接口 520和522可用于分別對關(guān)于客戶機 數(shù)據(jù)庫110和服務器數(shù)據(jù)庫190的數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)500進行來回轉(zhuǎn)換。為 了避免疑惑,上述數(shù)據(jù)集實現(xiàn)是非限制性的,并由此可利用其它數(shù)據(jù)結(jié)構(gòu) 來表示根據(jù)本發(fā)明的、客戶機和服務器之間往返的同步數(shù)據(jù)以及適當?shù)慕?口。無論選擇什么實現(xiàn),本發(fā)明的框架由此都能夠以傳輸無關(guān)的方式操作 而無需知道客戶機或服務器側(cè)的數(shù)據(jù)存儲的確切格式。
有利的是,如圖6所示,因為客戶機元數(shù)據(jù)被存儲在客戶機上,所以 本發(fā)明的同步框架可用于根據(jù)輻射(hub and spoke)模型來同步數(shù)據(jù),在 該模型中,客戶機610a、 610b、 610c等可與服務器600聯(lián)系并各自與同步 組605的數(shù)據(jù)同步?;谡谕降臄?shù)據(jù)的諸如時間戳等時間特性并根據(jù) 沖突解決策略,只要客戶機與服務器聯(lián)系,就可在服務器600和客戶機 610a、 610b、 610c處維護同步組605的一致數(shù)據(jù)集。
圖7A是實現(xiàn)從客戶機的觀點來看的用于使用本發(fā)明的框架來同步的 示例性、非限制性過程的流程圖。在700處,客戶機連接到服務器并請求 與服務器數(shù)據(jù)組的所選集合同步。在705處,客戶機生成或檢索包括客戶 機同步錨的同步元數(shù)據(jù)。在710處,客戶機向服務器傳送該客戶機所維護的同步元數(shù)據(jù)。如上所述,該客戶機所維護的同步元數(shù)據(jù)使服務器能夠確 定客戶機同步狀態(tài),該客戶機同步狀態(tài)包括所枚舉的自從先前同步時間之 后客戶機上所發(fā)生的對數(shù)據(jù)組的變更。在715處,客戶機接收來自服務器 的對同步請求的確認。
在720處,可任選地,客戶機接收到一組同步?jīng)_突,其中如服務器所
確定的,數(shù)據(jù)在分開的位置處被獨立地變更??蛻魴C可任選地根據(jù)各種所
選沖突解決策略來處理該組同步?jīng)_突。在725處,假定從服務器接收到確 認,則在客戶機上持久存儲同步錨。同樣,接著進行對數(shù)據(jù)組的本地變更 的分析,并且隨后向服務器傳送應當被發(fā)送到服務器的、對客戶機數(shù)據(jù)組 的任何變更。在730處,以對應的方式,客戶機隨后從服務器接收對數(shù)據(jù) 組的客戶機側(cè)版本的所需更新??蛻魴C隨后接收服務器所生成的但隨后由 客戶機維護以用于將來同步請求的新同步錨。
將更新應用到數(shù)據(jù)組的客戶機側(cè)版本,處理任何沖突并持久存儲來自 服務器的新同步錨。
圖7B是實現(xiàn)從本發(fā)明的服務器的觀點來看的用于同步的示例性、非限 制性過程的流程圖。在750處,從客戶機接收包括同步元數(shù)據(jù)的對一個或 多個同步組的同步請求。在755處,從客戶機接收對一個或多個同步組的 任何變更并更新這些同步組。在760處,確定這些變更所呈現(xiàn)的任何沖突。 在765處,將對處理請求和沖突的確認傳送到客戶機。在770處,為客戶 機枚舉客戶機側(cè)變更,從而使得該客戶機能夠更新該一個或多個同步組。 在775處,根據(jù)允許具有不同特征的多個錨數(shù)據(jù)類型的可擴展錨模型來將 同步錨從服務器傳送到客戶機。
在其它非限制性實施例中,本發(fā)明通過提供一協(xié)議來啟用可擴展同步
錨模型,該協(xié)議在客戶機和服務器之間傳送錨類型,但不在客戶機上采用 任何預定義結(jié)構(gòu)并由此靈活地允許具有變化層次特征的各種各樣的錨數(shù)據(jù) 類型。圖8示出各種錨類型A一T1、 A_T2、…、A—TN可根據(jù)本發(fā)明的協(xié)議 來在服務器800和客戶機810之間來回傳遞。另外,錨的結(jié)構(gòu)由服務器來 定義并且有利的是,客戶機無需為了與服務器同步而去理解該格式。錨因 此提供用于在各設備之間同步指定數(shù)據(jù)的本地"掛鉤",并且一般包括某類時間水印,如時間戳、身份、日期/時間等,以使掛鉤具有可在同步分析
和沖突解決期間進行分析的時間維度。
示例性網(wǎng)絡化和分布式環(huán)境
本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明可以結(jié)合可作為計算機網(wǎng)絡的 一部分來部署的任何計算機或其它客戶機或服務器設備來實現(xiàn),或可在連 接至任何種類的數(shù)據(jù)存儲的分布式計算環(huán)境中實現(xiàn)。在這一點上,本發(fā)明 涉及任何計算機系統(tǒng)或環(huán)境,其具有任意數(shù)目的存儲器或存儲單元,以及 發(fā)生在任意數(shù)目的存儲單元或巻上的任意數(shù)目的應用程序和進程,它們可 結(jié)合根據(jù)本發(fā)明的同步框架來使用。本發(fā)明可應用于具有部署在具有遠程 或本地存儲的網(wǎng)絡環(huán)境或分布式計算環(huán)^^中的服務器計算機和客戶計算機 的環(huán)境。本發(fā)明也可應用于具有用于結(jié)合遠程或本地服務和進程生成、接 收和發(fā)送信息的編程語言功能、解釋和執(zhí)行能力的獨立計算設備。
分布式計算通過計算設備和系統(tǒng)之間的交換提供了計算機資源和服務
的共享。這些資源和服務包括信息的交換、對于諸如文件等對象的高速緩 存存儲和盤存儲。分布式計算利用網(wǎng)絡連接,從而允許客戶機利用它們的 集體力量來使整個企業(yè)受益。就此,各種設備可具有可用作本發(fā)明的同步 框架的各組件的應用程序、對象或資源。
圖9提供示例性的網(wǎng)絡化或分布式計算環(huán)境的示意圖。該分布式計算
環(huán)境包括計算對象910a、 910b等,以及計算對象或設備920a、 920b、 920c、 920d、 920e等。這些對象可包括程序、方法、數(shù)據(jù)存儲、可編程邏輯等等。 這些對象可包括諸如PDA、音頻/視頻設備、MP3播放器、個人計算機等相 同或不同設備的各部分。每一對象可通過通信網(wǎng)絡940與另一對象通信。 該網(wǎng)絡本身可以包括向圖9的系統(tǒng)提供服務的其它計算對象和計算設備, 且其本身可以表示多個互連的網(wǎng)絡。根據(jù)本發(fā)明的一方面,每一對象910a、 910b等,或920a、 920b、 920c、 920d、 920e等可包含可利用適用于根據(jù)本 發(fā)明的用于同步數(shù)據(jù)組的系統(tǒng)和方法的API、或其它對象、軟件、固件和/ 或硬件的應用程序。
還可以理解,諸如920c等對象可以主存在另一計算設備910a、 910b 等或920a、 920b、 920c、 920d、 920e等上。因此,盡管所示的物理環(huán)境可以將所連接的設備示為計算機,但是這樣的圖示僅是示例性的,并且該物
理環(huán)境可以被替換地描述或描繪成包括諸如PDA、電視機、MP3播放器等 的各種數(shù)字設備,它們中的任何一個可采用諸如接口、 COM對象等各種有 線和無線服務、軟件對象。
存在支持分布式計算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡配置。例如,計算 系統(tǒng)可以通過有線或無線系統(tǒng)、本地網(wǎng)絡或廣泛分布的網(wǎng)絡連接在一起。 當前,許多網(wǎng)絡被耦合至因特網(wǎng),后者為廣泛分布的計算提供了基礎結(jié)構(gòu) 并包含許多不同的網(wǎng)絡。任何基礎架構(gòu)都可用于本發(fā)明的同步框架所附帶 進行的示例性通信。
在家庭網(wǎng)絡環(huán)境中,有至少四個全異的網(wǎng)絡傳輸介質(zhì),其每一個可支
持一種唯一的協(xié)議,這些介質(zhì)諸如電力線、數(shù)據(jù)(無線和有線)、語音(如,
電話)和娛樂媒體。諸如電燈開關(guān)和電器設備等大多數(shù)家庭控制設備可使
用電力線來連接。數(shù)據(jù)服務可通過寬帶(如,DSL或電纜調(diào)制解調(diào)器)進
入家庭,并可在家庭內(nèi)使用無線(如,HomeRF或802.11B)或有線(如,
家庭PNA、 Cat5、以太網(wǎng)、甚至是電力線)連接來訪問。語音話務可通過
有線(如,Cat 3)或無線(如,蜂窩電話)進入家庭,并可在家庭中使用
Cat 3連線來分布。娛樂媒體或其它圖形數(shù)據(jù)可通過衛(wèi)星或電纜進入家庭,
并通常在家庭中使用同軸電纜來分布。IEEE 1394和DVI也是用于媒體設
備群集的數(shù)字互聯(lián)??勺鳛閰f(xié)議標準浮現(xiàn)或已經(jīng)浮現(xiàn)的所有這些網(wǎng)絡環(huán)境 和其它環(huán)境可被互聯(lián)來形成可通過諸如因特網(wǎng)等廣域網(wǎng)連接到外部世界的
網(wǎng)絡,諸如內(nèi)聯(lián)網(wǎng)。簡言之,對數(shù)據(jù)的存儲和傳輸存在各種不同的源,因 此本發(fā)明的任何計算設備可按照任何現(xiàn)有方式共享和傳輸數(shù)據(jù),且在本文 實施例中描述的方式不旨在是限制性的。
因特網(wǎng)通常指使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議套件的網(wǎng)絡 和網(wǎng)關(guān)的集合,該協(xié)議在計算機聯(lián)網(wǎng)領(lǐng)域中是公知的。因特網(wǎng)可被描述為 由執(zhí)行允許用戶通過網(wǎng)絡交互和共享信息的聯(lián)網(wǎng)協(xié)議的計算機互連的地理 上分布的遠程計算機網(wǎng)絡的系統(tǒng)。由于這類廣泛分布信息的共享,諸如因 特網(wǎng)等遠程網(wǎng)絡至今發(fā)展成一種開放式系統(tǒng),開發(fā)者可用該開放式系統(tǒng)設 計用于執(zhí)行專用操作或服務的軟件應用程序而基本上沒有限制。由此,該網(wǎng)絡基礎結(jié)構(gòu)允許諸如客戶機/服務器、對等或混合體系結(jié)構(gòu) 等大量網(wǎng)絡拓樸結(jié)構(gòu)。"客戶機"是使用與它無關(guān)的另一類或組的服務的 一個類或組中的成員。由此,在計算時,客戶機是進程,即,粗略地而言 是一組請求由另一程序提供的服務的指令或任務??蛻魴C進程利用所請求 的服務,而不必"知道"有關(guān)其它程序或服務本身的任何工作細節(jié)。在客 戶機/服務器體系結(jié)構(gòu)中,尤其在網(wǎng)絡化系統(tǒng)中,客戶機通常是訪問由例如 服務器等另一計算機提供的共享的網(wǎng)絡資源的計算機。在圖9的圖示中,
作為示例,計算機920a、 920b、 920c、 920d、 920e等可以被認為是客戶機, 而計算機910a、 910b等可以被認為是服務器,其中服務器910a、 910b等 維護隨后被同步或復制到客戶機計算機920a、 920b、 920c、 920d、 920e等 的數(shù)據(jù),然而取決于環(huán)境,任何計算機都可被認為是客戶機、服務器或這 兩者。這些計算設備中的任一個都可處理數(shù)據(jù)或請求可包含根據(jù)本發(fā)明的 同步框架的服務或任務。
服務器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡基礎架構(gòu)等遠程網(wǎng)絡或本 地網(wǎng)絡訪問的遠程計算機系統(tǒng)??蛻魴C進程可以在第一計算機系統(tǒng)中活動, 而服務器進程可以在第二計算機系統(tǒng)中活動,它們通過通信介質(zhì)彼此通信, 從而提供分布式功能并允許多個客戶機利用服務器的信息收集能力。按照 本發(fā)明的用于同步數(shù)據(jù)組的技術(shù)利用的任何軟件對象都可跨多個計算設備 或?qū)ο蠓植肌?br> 客戶機和服務器利用由協(xié)議層提供的功能來彼此通信。例如,超文本 傳輸協(xié)議(HTTP)是結(jié)合萬維網(wǎng)(WWW),即"Web"使用的常見協(xié)議。 通常,諸如網(wǎng)際協(xié)議(IP)地址等計算機網(wǎng)絡地址或諸如統(tǒng)一資源定位器 (URL)等其它引用可以用于彼此標識服務器或客戶計算機。網(wǎng)絡地址可 以被稱為URL地址??梢酝ㄟ^通信介質(zhì)來提供通信,例如客戶機和服務器 可以通過TCP/IP連接來彼此耦合以進行大容量通信。
由此,圖9示出了其中可采用本發(fā)明的、服務器通過網(wǎng)絡/總線與客戶 計算機通信的示例性聯(lián)網(wǎng)或分布式環(huán)境。更詳細而言,根據(jù)本發(fā)明,多個 服務器910a、910b等經(jīng)由通信網(wǎng)絡/總線940與多個客戶機或遠程計算設備 920a、 920b、 920c、 9200d、 920e等互連,通信網(wǎng)絡/總線940可以是LAN、WAN、內(nèi)聯(lián)網(wǎng)、GSM網(wǎng)絡、因特網(wǎng)等,客戶機或遠程計算設備如便攜式計 算機、手持式計算機、痩客戶機、聯(lián)網(wǎng)設備或其它設備,如VCR、 TV、烤 箱、燈、加熱器等等。因此,構(gòu)想了本發(fā)明可應用于期望同步數(shù)據(jù)的任何 計算設備。
例如,在其中通信網(wǎng)絡/總線940是因特網(wǎng)的網(wǎng)絡環(huán)境中,服務器910a、 910b等可以是客戶機920a、 920b、 920c、 920d、 920e等通過諸如HTTP等 多種已知協(xié)議中的任一種與其通信的web服務器。服務器910a、 910b等也 可擔當客戶機920a、 920b、 920c、 920d、 920e等,這是分布式計算環(huán)境的 特性。
如上所述,通信可以是有線或無線的,或者是兩者的適當組合??蛻?機設備920a、 920b、 920c、 920d、 920e等可以通過或不通過通信網(wǎng)絡/總線 14通信,并可具有與其相關(guān)聯(lián)的獨立通信。例如,在TV或VCR的情況下, 可能存在或不存在其控制的網(wǎng)絡化方面。每一客戶計算機920a、920b、920c、 920d、 920e等以及服務器計算機910a、 910b等可以具備各種應用程序模塊 或?qū)ο?35a、 135b、 135c等,并具有對各種類型的存儲元件或?qū)ο蟮倪B接 或訪問,在這些存儲元件或?qū)ο笊峡蓛Υ嫖募驍?shù)據(jù)流,或者可向其下載、 傳送或遷移文件或數(shù)據(jù)流的各部分。計算機910a、 910b、 920a、 920b、 920c、 920d、 920e等中的任何一個或多個可負責維護并更新數(shù)據(jù)庫930或其它存 儲元件,如用于儲存根據(jù)本發(fā)明處理或保存的數(shù)據(jù)的數(shù)據(jù)庫或存儲器930。 由此,本發(fā)明可以用于具有可訪問計算機網(wǎng)絡/總線940并與其交互的客戶 計算機920a、 920b、 920c、 920d、 920e等,和可與客戶機計算機920a、 920b、 920c、 920d、 920e等以及其它類似的設備交互的服務器計算機910a、 910b 等,以及數(shù)據(jù)庫930的計算機網(wǎng)絡環(huán)境中。 示例性計算設備
如上所述,本發(fā)明適用于其中期望同步數(shù)據(jù)的任何設備。因此,應當 理解,構(gòu)想了結(jié)合本發(fā)明使用的所有種類的手持式、便攜式和其它計算設 備和計算對象,g卩,在設備可同步數(shù)據(jù)或以其它方式接收、處理或存儲數(shù) 據(jù)的任何地方。因此,在下面的圖10中描述的以下通用遠程計算機僅是一 個示例,且本發(fā)明可用具有網(wǎng)絡/總線互操作性和交互的任何客戶機來實現(xiàn)。由此,本發(fā)明可在其中蘊含了極少或最小客戶機資源的聯(lián)網(wǎng)的托管服務的 環(huán)境,例如其中客戶機設備僅用作到網(wǎng)絡/總線的接口 (如置于電器中的對
象)的聯(lián)網(wǎng)環(huán)境中實現(xiàn)。
盡管并不是必需的,但本發(fā)明可以部分地經(jīng)由操作系統(tǒng)來實現(xiàn),以供 設備或?qū)ο蟮姆臻_發(fā)者使用,和/或被包括在結(jié)合本發(fā)明的組件操作的應 用軟件中。軟件可以在由諸如客戶機工作站、服務器或其它設備等一個或 多個計算機執(zhí)行的諸如程序模塊等計算機可執(zhí)行指令的通用上下文中描 述。本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以用其它計算機系統(tǒng)配置和協(xié) 議來實施。
圖10由此示出其中可實現(xiàn)本發(fā)明的合適的計算系統(tǒng)環(huán)境1000a的一個 示例,但如以上清楚地描述的,計算系統(tǒng)環(huán)境1000a僅為用于媒體設備的 合適的計算環(huán)境的一個示例,并非旨在對本發(fā)明的使用范圍或功能提出任 何局限。也不應將計算系統(tǒng)1000a解釋為對示例性操作環(huán)境1000a中示出 的任一組件或其組合具有任何依賴性或需求。
參見圖10,用于實現(xiàn)本發(fā)明的示例性遠程設備包括計算機1010a形式 的通用計算設備。計算機1010a的組件可以包括,但不限于,處理單元1020a、 系統(tǒng)存儲器1030a、和將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單 元1020a的系統(tǒng)總線1021a。系統(tǒng)總線1021a可以是若干種類型的總線結(jié)構(gòu) 中的任一種,包括存儲器總線或存儲控制器、外圍總線、以及使用各種總 線體系結(jié)構(gòu)中的任一種的局部總線。
計算機1010a通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是 可由計算機1010a訪問的任何可用介質(zhì)。作為示例而非局限,計算機可讀 介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存 儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方 法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲 介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、 CDROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲 或其它磁存儲設備、或可以用來儲存所需信息并可由計算機1010a訪問的 任何其它介質(zhì)。通信介質(zhì)通常以諸如載波或其它傳輸機制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意 信息傳送介質(zhì)。
系統(tǒng)存儲器1030a可以包括諸如只讀存儲器(ROM)和/或隨機存取存儲 器(RAM)等易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)?;据斎? 輸出系統(tǒng)(BIOS)可被存儲在存儲器1030a中,它包含幫助在諸如啟動期 間在計算機1010a內(nèi)的元件之間傳遞信息的基本例程。存儲器1030a通常 還包含處理單元1020a可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模 塊。作為示例而非局限,存儲器1030a還可以包括操作系統(tǒng)、應用程序、 其它程序模塊、和程序數(shù)據(jù)。
計算機1010a也可以包括其它可移動/不可移動、易失性/非易失性計算 機存儲介質(zhì)。例如,計算機1010a可以包括對不可移動、非易失性磁介質(zhì) 進行讀寫的硬盤驅(qū)動器,對可移動、非易失性磁盤進行讀寫的磁盤驅(qū)動器, 和/或?qū)χT如CD-ROM或其它光學介質(zhì)等可移動、非易失性光盤進行讀寫的 光盤驅(qū)動器??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失 性/非易失性計算機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能 盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器通常由諸如接 口等不可移動存儲器接口連接至系統(tǒng)總線1021a,而磁盤驅(qū)動器或光盤驅(qū)動 器通常由諸如接口等可移動存儲器接口連接至系統(tǒng)總線1021a。
用戶可以通過輸入設備,如鍵盤和定點設備(通常指鼠標、跟蹤球或 觸摸板)向計算機1010a輸入命令和信息。其它輸入設備可以包括話筒、 操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設備 通常由耦合至系統(tǒng)總線1021a的用戶輸入1040a和相關(guān)聯(lián)的接口連接到處 理單元1020a,但是也可由諸如并行端口、游戲端口或通用串行總線(USB) 之類的其它接口和總線結(jié)構(gòu)連接。圖形子系統(tǒng)也可以被連接到系統(tǒng)總線 1021a。監(jiān)視器或其它類型的顯示設備也通過接口,如輸出接口 1050a連接 至系統(tǒng)總線1021a,而輸出接口 1050a又與視頻存儲器通信。除監(jiān)視器之外, 計算機還可以包括其它外圍輸出設備,如揚聲器和打印機,它們可以通過 輸出接口 1050a連接。
計算機1010a可使用至諸如遠程計算機1070a等的一個或多個遠程計算機的邏輯連接在網(wǎng)絡化或分布式環(huán)境中操作,遠程計算機1070a又可以具有與設備1010a不同的媒體能力。遠程計算機1070a可以是個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其它常見的網(wǎng)絡節(jié)點、或任何其它遠程媒體消費或傳輸設備,并且可以包括上面關(guān)于計算機1010a所描述的任何或全部元件。圖IO所示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)等的網(wǎng)絡1071a,但也可以包括其它網(wǎng)絡/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當在LAN聯(lián)網(wǎng)環(huán)境中使用時,計算機1010a通過網(wǎng)絡接口或適配器連接至LAN1071a。當在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機1010a通常包括通信組件,諸如調(diào)制解調(diào)器或用于通過諸如因特網(wǎng)等的WAN建立通信的其它裝置。諸如調(diào)制解調(diào)器等通信組件可以是內(nèi)置或外置的,它可以通過輸入1040a的用戶輸入接口或其它適當?shù)臋C制連接至系統(tǒng)總線1021a。在網(wǎng)絡化環(huán)境中,相對于計算機1010a所描述的程序模塊或其部分可被儲存在遠程存儲器存儲設備中。可以理解,所示和所述的網(wǎng)絡連接是示例性的,且可以使用在計算機之間建立通信鏈路的其它手段。示例性分布式計算體系結(jié)構(gòu)
鑒于個人計算和因特網(wǎng)的交匯,已經(jīng)開發(fā)且正在開發(fā)各種分布式計算框架。個人和企業(yè)用戶同樣地配備用于應用程序和計算設備的無縫互操作和啟用web的接口,使得計算活動越來越面向web瀏覽器和網(wǎng)絡。
例如,MICROSOFT⑧的托管代碼平臺,S卩.NET,包括服務器、諸如基于web的數(shù)據(jù)存儲等構(gòu)件塊服務、以及可下載設備軟件。 一般而言,.NET平臺提供(1)令整個范圍的計算設備共同工作并在所有設備上自動更新并同步用戶信息的能力,(2)提高的網(wǎng)頁交互能力,通過大量使用XML而不是HTML來實現(xiàn),(3)以從用于管理諸如電子郵件等各種應用程序或諸如Office.NET等軟件的中央起點到用戶的產(chǎn)品和服務的定制訪問和傳送為特點的在線服務,(4)集中式數(shù)據(jù)存儲,將增加對信息訪問以及用戶和設備間的信息同步的效率和簡易性,(5)集成各種通信媒體,如電子郵件、傳真和電話的能力,(6)對開發(fā)人員來說,創(chuàng)建可重用模塊的能力,由此提高生產(chǎn)力并降低編程差錯的數(shù)量,以及(7)許多其它跨平臺和語言綜合特性。
盡管此處的某些示例性實施例是結(jié)合諸如應用程序編程接口 (API)等駐留在計算設備上的軟件來描述的,但本發(fā)明的一個或多個部分也可以通過操作系統(tǒng)、或"中間人"對象、控制對象、硬件、固件、中間語言指令
或?qū)ο蟮葋韺崿F(xiàn),使得由諸如.NET代碼等托管代碼啟用的所有語言和服務
以及其它分布式計算框架可包括、支持或可經(jīng)由它們來訪問用于根據(jù)本發(fā)明的協(xié)議來通信的方法。
有多種實現(xiàn)本發(fā)明的方法,例如適當?shù)腁PI、工具箱、驅(qū)動程序代碼、
操作系統(tǒng)、控件、獨立或可下載軟件對象等,它們使得應用程序和服務能
夠使用本發(fā)明的同步數(shù)據(jù)的系統(tǒng)和方法。本發(fā)明從API (或其它軟件對象)的觀點以及從實現(xiàn)本發(fā)明的協(xié)議的軟件或硬件對象的觀點構(gòu)想了對本發(fā)明的使用。由此,此處描述的本發(fā)明的各種實現(xiàn)都可以具有完全采用硬件、部分采用硬件并且部分采用軟件、以及采用軟件的方面。
在本文中使用的詞語"示例性"意味著用作示例、實例或說明。為避免疑惑,本文公開的主題不受限于這樣的示例。此外,本文描述為"示例性"的任何方面或設計不必解釋成優(yōu)于其它方面或設計或比其它方面或設計有利,它也不旨在排除本領(lǐng)域的普通技術(shù)人員所知的等效示例性結(jié)構(gòu)和技術(shù)。而且,就術(shù)語"包括"、"具有"、"包含"和其它類似的詞語在詳細描述或權(quán)利要求書中的使用而言,為避免疑惑,這樣的術(shù)語旨在以類似于術(shù)語"包括"作為開放的過渡詞的方式解釋而不排除任何附加或其它元素。
如上所述,盡管結(jié)合各種計算設備和網(wǎng)絡體系結(jié)構(gòu)描述了本發(fā)明的示例性實施例,但底層概念可被應用于其中期望同步數(shù)據(jù)的任何計算設備或系統(tǒng)。盡管此處選擇了示例性編程語言、名稱和示例來表示各種選擇,但這些語言、名稱和示例并不旨在是限制性的。本領(lǐng)域的普通技術(shù)人員將認識到,有多種方法來提供實現(xiàn)本發(fā)明的各實施例所實現(xiàn)的相同、相似或等效的功能的目標代碼和命名法。
如上所述,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當時以兩者的組合來實現(xiàn)。如在此所使用的,術(shù)語"組件"、"系統(tǒng)"等同樣指的是計算機相關(guān)實體,或者是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是,但不限于是,在處理器上運行的進程、處理器、對象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計算機。作為說明,運行在計算機上的應用程序和計算機本身都可以是計算機組件。 一個或多個組件可以駐留在進程和/或執(zhí)行的線程中,并且組件可以位于一個計算機內(nèi)和/或分布在兩個或更多的計算機之間。
由此,本發(fā)明的方法和裝置或其特定方面或部分可采取包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式,其中當程序代碼被加載到諸如計算機等機器內(nèi)并由其執(zhí)行時,該機器成為用于實現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性的存儲器和/或存儲元件)、至少一個輸
入設備、以及至少一個輸出設備。可例如通過使用數(shù)據(jù)處理API、可重用
控件等來實現(xiàn)或利用本發(fā)明的協(xié)議的一個或多個程序較佳地用高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn)以便與計算機系統(tǒng)進行通信。然而,如果需要,程序可以用匯編語言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實現(xiàn)相結(jié)合。
本發(fā)明的方法和裝置也可以經(jīng)由以通過某種傳輸介質(zhì)傳輸?shù)某绦虼a的形式體現(xiàn)的通信來實現(xiàn),比如通過電線或電纜、通過光纖或經(jīng)由任何其
它傳輸形式,其中,當程序代碼由諸如EPROM、門陣列、可編程邏輯器件(PLD)、客戶計算機等機器接收、加載并執(zhí)行時,該機器成為用于實現(xiàn)
本發(fā)明的裝置。當在通用處理器上實現(xiàn)時,程序代碼與處理器相結(jié)合來提
供一種用于調(diào)用本發(fā)明的功能的獨特裝置。另外,結(jié)合本發(fā)明使用的任何
存儲技術(shù)總是可以是硬件和軟件的組合。
此外,所公開的主題可以使用產(chǎn)生軟件、固件、硬件或其任意組合的
標準編程和/或工程技術(shù)實現(xiàn)為用于控制基于計算機或處理器的設備以實現(xiàn)
在此所詳述的諸方面的系統(tǒng)、方法、裝置或制品。此處所用的術(shù)語"制品"(或作為替換,"計算機程序產(chǎn)品")旨在涵蓋可從任何計算機可讀設備、
載體或介質(zhì)訪問的計算機程序。例如,計算機可讀 質(zhì)可包括但不限于,磁存儲設備(例如,硬盤、軟盤、磁帶……)、光盤(例如,緊致盤(CD)、
數(shù)字多功能盤(DVD)……)、智能卡、以及閃存設備(例如,卡、棒)。
另外,已知可以采用載波來承載計算機可讀電子數(shù)據(jù),例如那些用于發(fā)送
和接收電子郵件或用于訪問如因特網(wǎng)或局域網(wǎng)(LAN)等網(wǎng)絡的數(shù)據(jù)。
己經(jīng)關(guān)于若干組件之間的交互描述了前述系統(tǒng)。應該理解,這樣的系統(tǒng)和組件可以包括那些組件或指定的子組件、指定的組件或子組件中的某一些、和/或另外的組件,并根據(jù)前述的各種排列和組合。子組件也可以被實現(xiàn)為通信耦合至其它組件而非被包括在父組件(分層)內(nèi)的組件。另外,應注意到一個或多個組件可被組合成提供聚集功能的單個組件,或被分成若干單獨的子組件,且諸如管理層等任何一個或多個中間層可被設置成通
信耦合到這樣的子組件以便提供集成功能。此處描述的任何組件也可以與在此未具體描述但本領(lǐng)域的技術(shù)人員公知的一個或多個其它組件交互。
考慮到以上描述的示例性系統(tǒng),參考圖3A、 3B、 3C、 3D、 7A和7B的流程圖將可以更好地理解可根據(jù)所公開的主題實現(xiàn)的方法。盡管出于說明簡單的目的,各方法被顯示和描述為一系列框,但應該理解和領(lǐng)會,所
要求保護的主題不受框次序的限制,因為一些框能夠以不同的次序和/或與在此描繪和描述的其它框同時發(fā)生。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實現(xiàn)達成相同或類似結(jié)果的各種其它分支、流程路徑和框次序。而且,并非所有示出的框都是實現(xiàn)以下描述的方法所必需的。
此外,應該明白以上公開的系統(tǒng)以及以下方法的不同部分可以包括或包含人工智能或基于知識或規(guī)則的組件、子組件、進程、裝置、方法或機制(例如,支持向量機、神經(jīng)網(wǎng)絡、專家系統(tǒng)、貝葉斯置信網(wǎng)絡、模糊邏輯、數(shù)據(jù)融合引擎、分類器等)。這樣的組件和其它組件可以自動化所執(zhí)行的某些機制或進程,由此使得系統(tǒng)和方法的各部分更為自適應、高效及智能。
盡管已結(jié)合各個附圖的優(yōu)選實施方式對本發(fā)明進行了描述,但是可以理解,可以使用其它類似的實施方式或可以對所描述的實施方式進行修改或添加以實現(xiàn)本發(fā)明的相同功能而不背離本發(fā)明。例如,盡管在諸如對等聯(lián)網(wǎng)環(huán)境等聯(lián)網(wǎng)環(huán)境的上下文中描述了本發(fā)明的示例性網(wǎng)絡環(huán)境,但是本領(lǐng)域的技術(shù)人員將認識到,本發(fā)明不限于此,并且本申請中所描述的方法可應用于任何計算設備或環(huán)境,諸如游戲控制臺、手持式計算機、便攜式計算機等等,不論其是有線還是無線的,并且該方法可應用于經(jīng)由通信網(wǎng)絡連接并通過網(wǎng)絡交互的任意數(shù)量的此類計算設備。此外,應當強調(diào),構(gòu)想了包括手持式設備操作系統(tǒng)和其它專用操作系統(tǒng)的各種計算機平臺,尤其是在無線聯(lián)網(wǎng)設備的數(shù)量持續(xù)增長時。
盡管各示例性實施例涉及在特定編程語言構(gòu)造的上下文中利用本發(fā)明,但是本發(fā)明不限于此,而是可用任何語言實現(xiàn)來提供本發(fā)明的同步通信協(xié)議和方法。而且,本發(fā)朋可以在多個處理芯片或設備中實現(xiàn)或跨多個處理芯片或設備實現(xiàn),且存儲可以類似地跨多個設備來實現(xiàn)。因此,本發(fā)明不應限于任何單個實施例,而是應該根據(jù)所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種用于在服務器和至少一個客戶機之間同步至少一個數(shù)據(jù)組的同步框架,包括客戶機同步提供者組件,所述客戶機同步提供者組件在所述服務器和所述至少一個客戶機之間的所述至少一個數(shù)據(jù)組的同步期間獨立于客戶機存儲的結(jié)構(gòu)來接口到所述客戶機存儲;同步代理程序組件,所述同步代理程序組件收集所述至少一個客戶機所維護的同步元數(shù)據(jù)以在同步期間向所述服務器傳輸,并向服務器存儲上傳和/或從中下載對所述至少一個數(shù)據(jù)組的變更;以及服務器同步提供者組件,所述服務器同步提供者組件在所述服務器和所述至少一個客戶機之間的所述至少一個數(shù)據(jù)組的同步期間獨立于服務器存儲的結(jié)構(gòu)來接口到所述服務器存儲。
2. 如權(quán)利要求l所述的同步框架,其特征在于,還包括 客戶機應用程序,所述客戶機應用程序通過向所述客戶機同步提供者組件做出同步請求來消費同步數(shù)據(jù)。
3. 如權(quán)利要求2所述的同步框架,其特征在于,所述客戶機同步提供 者組件是多個默認客戶機同步提供者中的一個。
4. 如權(quán)利要求2所述的同步框架,其特征在于,所述客戶機同步提供者組件是為所述客戶機應用程序的一個或多個功能所定制的客戶機同步提 供者。
5. 如權(quán)利要求2所述的同步框架,其特征在于,所述同步代理程序組 件向所述客戶機應用程序傳播差錯、進展和沖突事件。
6. 如權(quán)利要求1所述的同步框架,其特征在于,還包括直接與所述服務器存儲通信的至少一個同步適配器,其中所述同步代 理程序組件與使用所述至少一個同步適配器來連接到所述服務器存儲的所 述服務器同步提供者組件交互。
7. 如權(quán)利要求6所述的同步框架,其特征在于,所述至少一個同步適 配器中的每一個定義對于在客戶機和服務器之間同步的每一個表的表和列 映射,并對多個表進行邏輯分組。
8. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序組 件指示所述服務器同步提供者組件將所述客戶機存儲上的插入傳播到所述 服務器存儲。
9. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序組件指示所述服務器同步提供者組件將所述客戶機存儲上的更新傳播到所述 服務器存儲。
10. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件將所述客戶機存儲上的刪除傳播到所 述服務器存儲。
11. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件枚舉自從所述客戶機存儲上一次同步 之后在所述服務器存儲上發(fā)生的插入。
12. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件枚舉自從所述客戶機存儲上一次同步 之后在所述服務器存儲上發(fā)生的更新。
13. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件枚舉自從所述客戶機存儲上一次同步 之后在所述服務器存 儲上發(fā)生的刪除。
14. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件獲取導致插入、更新或刪除命令失敗 的現(xiàn)有行。
15. 如權(quán)利要求1所述的同步框架,其特征在于,所述同步代理程序 組件指示所述服務器同步提供者組件獲取導致插入、更新或刪除命令失敗 的現(xiàn)有行。
16. 如權(quán)利要求1所述的同步框架,其特征在于,所述服務器同步提 供者組件存儲所述至少一個數(shù)據(jù)組的同步信息,枚舉自從上一次同步之后 在所述服務器存儲上發(fā)生的增量變更,將從客戶機接收到的增量變更應用 于所述服務器存儲。
17. 如權(quán)利要求1所述的同步框架,其特征在于,所述服務器同步提供者組件檢測沖突的更新并在程序上或交互式地啟用對所述沖突的解決。
18. —種用于根據(jù)同步框架來在服務器和至少一個客戶機之間同步 至少一個數(shù)據(jù)組的方法,包括將所述至少一個客戶機的同步應用程序連接到所述服務器; 所述至少一個客戶機的客戶機同步提供者組件的同步應用程序請求同步,所述客戶機同步提供者組件獨立于客戶機存儲的結(jié)構(gòu)接口到所述客戶機存儲;所述至少一個客戶機的同步代理程序組件接收所述至少一個客戶機所 維護的、包括同步錨的同步元數(shù)據(jù),所述同步代理組件接口到并指示所述 服務器的執(zhí)行同步的一個或多個組件;以及所述同步代理程序組件進行以下動作的至少一個將對所述至少一個 數(shù)據(jù)組的變更上傳到服務器存儲,或從服務器存儲下載對所述至少一個數(shù) 據(jù)組的變更。
19. 如權(quán)利要求18所述的方法,其特征在于,還包括 參考至少一個同步?jīng)_突解決策略來解決對所述至少一個數(shù)據(jù)組的變更所呈現(xiàn)的至少一個沖突。
20. —種用于根據(jù)同步框架來在服務器和松耦合客戶機之間同步至少一個數(shù)據(jù)組的方法,包括服務器同步提供者組件從所述松耦合客戶機接收對與所述服務器的至 少一個同步組進行同步的請求,包括接收所述客戶機所維護的同步元數(shù)據(jù), 從而允許確定所述客戶機的同步狀態(tài);對于所述至少一個同步組中的每一個同步組,所述服務器同步提供者組件從所述客戶機接收對所述同步組的 任何變更;以及經(jīng)由獨立于服務器存儲的結(jié)構(gòu)與所述服務器存儲通信的至少一個同步 適配器,基于所述變更來更新所述服務器的至少一個同步組。
全文摘要
提供了用于在服務器和可離線的客戶機之間同步數(shù)據(jù)組的同步框架。該框架包括以存儲格式無關(guān)的方式接口到客戶機存儲的客戶機同步提供者組件、收集客戶機所維護的同步元數(shù)據(jù)并向服務器存儲上傳和/或從中下載對數(shù)據(jù)組的變更的同步代理程序組件、以及獨立于存儲格式經(jīng)由同步適配器接口到服務器存儲的服務器同步提供者組件。該框架提供用于構(gòu)建根據(jù)默認應用程序同步場景來表現(xiàn)的離線同步應用程序的默認構(gòu)件塊,并且還允許用于自定義離線應用程序同步場景的自定義構(gòu)件塊。
文檔編號G06F15/16GK101601027SQ200880003860
公開日2009年12月9日 申請日期2008年1月31日 優(yōu)先權(quán)日2007年2月1日
發(fā)明者P·A·瓦格恩, R·羅貝爾, S·A·齊特, S·M·拉斯克, V·K·T·西斯特拉, Y·陳 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1