Microsoft Sync Framework架構與運行時
本篇會先為大家介紹同步的各種參與方,參與方的類型決定了我們是否能夠存儲元數據,以及是否能夠直接啟動同步過程。然后會和大家詳細討論Microsoft Sync Framework的核心組件和系統架構,以讓大家對Sync Framework有一個全局性的認識和了解。
Sync Framework參與方(Participants)
在討論Sync Framework核心組件之前,我們需要首先了解Sync Framework 支持的不同類型的同步參加方。參與方是提供程序及其關聯副本的組合,代表了同步的一端。要同步的副本(即信息倉庫)可以是取自 Web 服務、筆記本電腦、乃至 U 盤中的任何對象。
Microsoft Sync Framework 支持三種類型的參與方:完整、部分和簡單。參與方的類型由其存儲和處理同步元數據的能力決定。至少,我們可以假定如有請求,副本具備通過程序返回信息的能力。最后需要確定的是副本是否能夠:
- 在現有設備上或當前數據存儲中存儲和操作信息,並
- 允許應用程序(我們稱之為同步提供程序)直接在設備上執行
區分參與方的類型對於同步生態系統來說十分重要,因為它使我們了解到該參與方是否能夠存儲提供程序所需的狀態信息,以及我們是否能夠直接在設備上運行提供程序。最終,參與方模型將成為通用模型。因此,可以將完整參與方配置為部分或簡單參與方。
完整參與方
完整參與方是指允許開發人員直接在設備上創建應用程序和新數據存儲的設備。筆記本電腦和智能電話就屬於完整參與方,因為可以直接從此類設備執行新的應用程序,並且如有必要,您還可以創建新的數據存儲以保存信息。
部分參與方
部分參與方是指能夠在設備上存儲數據的設備。但無法直接從這些設備上啟動可執行程序。部分參與方的重要特性在於它能夠存儲同步所需的元數據,並因此得以與任何完整參與方進行同步。部分參與方的一個例子是 U 盤。這些設備類似於硬盤,能夠創建、更新或刪除信息。但通常它們不提供使應用程序能夠直接在設備上運行的接口。
簡單參與方
簡單參與方是指僅具備當接到請求時提供信息這一種能力的設備。此類設備不能存儲或操作新數據,而且不支持創建新的應用程序。簡單參與方依靠完整參與方存儲其元數據(因此只能與特定的完整參與方進行同步)。
由外部組織(如 Amazon 或 EBay)提供的 RSS 源和 Web 服務都屬於簡單參與方。這些組織可能會賦予您執行 Web 服務並取回結果的能力,但不會賦予您在其 Web 服務器上創建您自己的數據存儲或執行您自己應用程序的能力。
組合同步參與方
Microsoft Sync Framework 的最終目標是,無論數據源采用哪種參與類型,都允許對它們進行集成。因此,簡單和部分參與方可以與完整參與方同步信息。但至少需要一個能夠存儲信息和啟動同步過程的完整參與方。
Sync Framework核心組件
Sync Framework 包括一個運行時、用於特定數據存儲區的一組“同步提供程序(synchronization providers)”以及用於編寫提供程序的一個 API。提供程序是在數據源和同步系統中的其他組件之間進行通信的軟件組件。如果Sync Framework已經為我們要同步的數據存儲區提供了提供程序,強烈建議您使用該提供程序。提供程序具有可擴展性,以便您定制它們來適合您的應用程序。如果您要同步我們未提供提供程序的數據存儲區或您需要其他實現,則請使用自定義提供程序。
下圖顯示了 Sync Framework 中所有組件之間的關系。
該圖中的組件如下所示:
- 數據庫同步提供程序(在以前的版本中稱為 Sync Services for ADO.NET)。這些提供程序包含在 Microsoft.Synchronization.dll、Microsoft.Synchronization.Data.dll、Microsoft.Synchronization.Data.Server.dll、Microsoft.Synchronization.Data.SqlServer.dll 和 Microsoft.Synchronization.Data.SqlServerCe.dll 中。它們可用於在以下類型的方案中同步數據庫:
- 協作方案。例如,在一個允許用戶共享項目備注的應用程序中,項目團隊成員通常需要一份可以處理的數據的本地副本。當他們進行變更時,可以與其他團隊成員同步以交換變更,還可以與中央服務器同步變更。
- 脫機方案。例如,一個銷售人員需要在客戶的辦公室訪問產品數據,還必須能上載訂單。該銷售人員可以在每天早上與中央服務器同步以確保具有最新的產品和價格信息,然后在晚上執行同步以上載當天的訂單。
- 文件同步提供程序(在以前的版本中稱為 Sync Services for File Systems)。此提供程序包含在 FileSyncProvider21.dll 和 Microsoft.Synchronization.Files.dll 中。它可用於同步 NTFS、FAT 或 SMB 文件系統中的文件和文件夾。要同步的目錄可為本地或遠程目錄,且不必同屬一個文件系統。應用程序可以使用靜態篩選器通過顯式列出文件或使用通配符(如 *.txt)來排除或包括這些文件;或者應用程序可以設置篩選器來排除整個子文件夾。應用程序還可以注冊以接收文件同步進度的通知。
- Web Feed同步組件(在以前的版本中稱為 Sync Services for FeedSync)。這些組件包含在 FeedSync21.dll 和 Microsoft.Synchronization.dll 中。可以通過兩種方式使用這些組件:
- Web Feed同步提供程序服務可用於編寫將 FeedSync XML 文件表示為其副本的提供程序。
- Web Feed生成方和使用方組件可用於將其他類型的副本(如文件系統)的數據與 RSS 或 Atom Feeds同步。
- 自定義提供程序。這些組件包含在 Synchronization21.dll 和 Microsoft.Synchronization.dll 以及 SimpleProviders21.dll 和 Microsoft.Synchronization.SimpleProviders.dll 中。它們可用於為任何類型的數據存儲區創建同步提供程序。例如,如果應用程序包括用於客戶聯系人跟蹤的自定義存儲系統,您可以使用簡單提供程序或完全自定義提供程序將該數據集成到您的應用程序。
- 元數據存儲服務。此組件包含在 MetaStore21.dll 和Microsoft.Synchronization.MetadataStorage.dll 中。自定義提供程序可以使用該服務作為存儲和處理同步元數據的一種便捷方式,特別對於無法存儲元數據的副本很適用。元數據存儲服務使用占用較小內存和磁盤空間的可靠輕型數據庫,可以隨提供程序重新分發。該 API 將元數據存儲區與用於訪問元數據存儲區的接口和方法明確區分開,這樣既可實現備用存儲區,且對提供程序稍作變更即可使用備用存儲區。
- 核心 API 和運行時。這些組件包含在 Synchronization21.dll 和 Microsoft.Synchronization.dll 中。核心API和運行時由除脫機數據庫提供程序之外的其他組件使用。
Sync Framework系統架構
Sync Framework 使用基於提供程序的體系結構。提供程序使其他同步組件不再涉及每個數據存儲區的復雜情況和特定實現。這個體系結構配合使用專門的同步元數據,使得 Sync Framework 可以同步編寫了提供程序的任何類型的數據存儲區。Sync Framework 提供常見數據存儲區(如數據庫和 NTFS 文件系統)的提供程序,並允許您為其他類型的存儲區編寫提供程序。提供程序是 Sync Framework 的主要集成點。
下圖顯示了 Sync Framework 的高級體系結構。同步總是發生在圖中所示的兩個副本(或“節點”)之間,但是同步社區(或“拓撲”)可以為任何形狀,如中心輻射型、對等等。除了一些例外情況外,每對參與者可以根據應用程序的要求在 2 層或 n 層體系結構上同步。每個 Sync Framework 組件的文檔提供有關相應體系結構和安全注意事項的詳細信息。
圖中的元素分為三種類型:
- 由開發人員編寫的元素。
- 應用程序根據應用程序的要求調用同步方法、響應事件和處理其他任務。
- 數據存儲區可以是文件系統、關系數據庫、平面文件聯系人存儲區或需要同步的任何其他數據存儲區。
- 數據傳輸協議確定兩個提供程序之間傳輸數據變更的方式。
- 由 Sync Framework 提供的元素。
- 根據使用的是本機代碼還是托管代碼,應用程序與同步會話或同步控制器通信,后者與每個同步提供程序通信。
- 同步運行時驅動同步過程並將狀態、沖突和錯誤信息告知客戶端應用程序。
- 由開發人員編寫或由 Sync Framework 提供的元素,取決於具體實現方案。
- 提供程序對於正在同步的數據類型而言是特定的。在某些情況下,應用程序需要必須由開發人員編寫的自定義提供程序。Sync Framework 提供了很多簡化這一過程的 API,還提供了一些組件幫助完成同步最困難的部分(如沖突檢測)。
- 元數據存儲區包含元數據,Sync Framework 使用這些元數據確定每個提供程序應選擇哪些變更並將它們應用到所服務的數據存儲區。存儲和使用元數據的方式取決於所使用的提供程序。例如,用於數據庫的提供程序一般將元數據存儲在數據存儲區所在數據庫的跟蹤表中。對於自定義提供程序,您可以創建元數據存儲區或使用隨 Sync Framework 提供的服務。
在了解了Sync Framework的核心組件和系統架構之后,我會在下一篇中詳細的討論Sync Framework的另一個關鍵特征:Sync Metadata,即同步元數據。