Sync Framework 支持在數據庫之間進行同步。它提供了一個直觀且靈活的 API,使您可以生成面向脫機和協作方案的應用程序。通過該 API,您可以根據應用程序的體系結構和要求,使用所提供的所有或部分組件。Sync Framework 支持客戶端-服務器、客戶端到客戶端和混合拓撲。在客戶端-服務器拓撲中,所有客戶端都與某一中央服務器同步。在客戶端到客戶端拓撲中,每個客戶端都可以與其他客戶端同步,而變更不必通過中央服務器來傳遞。混合拓撲由客戶端到客戶端拓撲和客戶端-服務器拓撲組合而成。
Sync Framework 與其他技術的對比
Microsoft 爲執行同步的應用程序提供了多種技術。 就對等同步而言,可對比的最重要的技術是對等事務複製。這種技術用於同步兩個或更多 SQL Server Enterprise 數據庫。 儘管比較這兩種技術很有用,但應注意對等事務複製專用於提供可伸縮性和高可用性的服務器到服務器的同步,而 Sync Framework 專用於支持協作應用程序的客戶端到服務器的同步以及客戶端到客戶端的同步。
下表可幫助您決定哪一種技術最適合您要構建的應用程序。
主要功能 |
對等事務複製 |
Sync Framework |
---|---|---|
使用服務進行同步 |
否 |
是 |
與其他類型的數據存儲區同步1 |
否 |
是 |
增量變更跟蹤2 |
是 |
是 |
衝突檢測和解決3 |
是 |
是 |
自動初始化架構和數據 |
是 |
否 |
支持大型數據集 |
是 |
是 |
自動傳播架構變更 |
是 |
否 |
1數據庫可以與 Sync Framework 支持的其他數據源(例如,Web 服務、文件系統或自定義數據存儲區)交換信息。
2Sync Framework 使用淨變更跟蹤,在其中同步行的最新版本。在對等事務複製中,對每一對等方按順序應用對一行所做的所有變更。
3 複製內置衝突解決功能;因此,Sync Framework 爲構建衝突解決方案提供了一個框架。
Sync Framework 提供了類似於脫機數據集這樣的編程模型的靈活性,並且具有更加豐富的同步功能集(與複製中提供的功能集類似)。複製適合數據庫管理員使用,旨在同步 SQL Server 數據庫。複製提供許多重要功能,並可通過嚮導、存儲過程及其自身的 API 進行配置。Sync Framework 則面向開發人員,支持與其他類型的數據存儲區進行同步以及跨服務(如 Windows Communication Foundation,WCF)進行的同步。
對於某些應用程序,很容易做出使用某種技術的決定:如果必須使用多個單獨的組件以通過不同傳輸或服務進行同步,或者對數據源而不是數據庫進行同步,則應使用 Sync Framework。如果您是一名數據庫管理員,您正準備設計一個具有可伸縮性和高可用性的系統,或者希望在不進行過多編程的情況下配置同步,則複製可能是更好的選擇。最後,您必須仔細考慮應用程序的要求,並確定 Sync Framework API 是否是適用的技術。如果您想做的不僅僅是將架構及其數據從一個數據庫複製到另一個數據庫,建議您使用 Sync Framework。
同步方案
對組織來說,能夠支持移動和遠程工作人員正在變得越來越重要。組織機構應確保這些工作人員能夠像在辦公室時一樣訪問到相同的信息,這一點非常重要。在大多數情況下,這些用戶將使用便攜式計算機、辦公檯式機、smartphone 或 PDA。通過這些設備,用戶有時候可以使用 VPN 連接或可直接連接到公司網絡的其他方法訪問其數據。對於大多數遠程用戶來說,這種解決方案由於在下列方面存在嚴重缺陷而無法獲得滿意的效果:
-
網絡要求
若要使用戶能夠訪問信息,遠程設備在訪問數據時必須能夠不間斷地連接到公司網絡。對於某些工作人員(如在家辦公的人員),這可能並不是什麼問題。但對於其他用戶(如經常出差的銷售人員),就可能會比較困難。例如,如果某一銷售人員正在拜訪客戶,並且由於沒有網絡連接而無法訪問庫存數據,該銷售人員將無法有效地完成工作。
-
數據訪問速度
在典型的客戶端-服務器公司環境中,用戶擁有可快速訪問信息的高速網絡。但是,遠程工作人員常常通過不太可靠的慢速網絡進行連接。在使用典型的解決方案時,每次當用戶需要一份數據時,都必須進行下載,因爲無法將數據長久地保存到設備上。例如,銷售人員每次打開應用程序時,都必須下載其產品列表,而使用信息填充應用程序所需的時間可能非常長,這讓用戶非常苦惱。
-
單個故障點
使用這種解決方案時,用戶常常依賴於單個服務器數據庫。如果數據庫由於計劃的服務器停機或意外的服務器故障而無法使用,所有遠程工作人員與其數據的連接將會中斷。
-
服務器可伸縮性
隨着遠程工作人員的數量不斷增加,公司服務器的性能將會受到影響,並且可能需要添加更多的硬件。
偶爾連接的應用程序
前一部分介紹的解決方案的一種替代方案是實現偶爾連接的應用程序。偶爾連接的應用程序仍使得遠程工作人員能夠訪問數據,但其所需的信息在本地存儲。偶爾連接的應用程序通常使用數據同步來填充本地數據庫。
數據同步包括以下功能:定期獲取存儲在一個數據庫(如客戶端數據庫)中的信息並與其他數據庫(如服務器數據庫)同步變更。基於同步的解決方案的優點在於:用戶不再必須使用不間斷的網絡連接來訪問信息。由於將數據存儲在本地,用戶可以隨時訪問數據,同時還減輕了中心數據庫的處理負載。此外,由於網絡速度不再是限制因素,用戶現在能夠以本地計算機的速度來訪問數據。
客戶端到客戶端同步可避免發生單點故障,因爲它使同步不依賴於所有變更均需通過服務器。這種將大量應用程序處理推向每個客戶端的功能還有助於解決服務器可伸縮性問題。
Sync Framework 使用"同步提供程序"與同步的每個數據庫進行通信。Sync Framework 數據庫提供程序(與 ADO.NET 數據提供程序類似)保護其他 Sync Framework 組件不受各數據庫的特定實現方式的影響。Sync Framework 包括五個數據庫提供程序,這些提供程序支持兩種方案:脫機和協作方案。下圖顯示一個脫機方案:在客戶端-服務器拓撲中,多個客戶端連接到一箇中央服務器,以便在連接可用時同步數據。
這種偶爾連接的應用程序的一個常見擴展是支持協作應用方案的能力。在這些應用方案中,兩個數據庫可以通過對等方式進行同步,而無需通過中央集線器。下圖顯示一個混合拓撲,其中,一箇中央服務器與多個客戶端同步,並且這些客戶端能夠彼此同步。此類拓撲可以支持允許用戶共享項目備註的應用程序。項目團隊成員常常要求他們可處理的數據的本地副本。當他們進行變更時,他們可以與服務器同步以上載變更,或與其他團隊成員同步以交換變更。
數據庫同步提供程序
下面是 Sync Framework 包括的三個主要數據庫同步提供程序:
-
SqlSyncProvider - 用於同步 SQL Server 數據庫
-
SqlCeSyncProvider - 用於同步 SQL Server Compact 數據庫
-
DbSyncProvider - 通常用於同步非 SQL Server 數據庫
這些提供程序具有以下特徵:
-
適合於客戶端-服務器拓撲、對等拓撲和混合拓撲。
-
可以用於更靈活的方式。例如,您可以同步 DbSyncProvider 的兩個實例,或者同步SqlSyncProvider 的一個實例和SqlCeSyncProvider 的一個實例,等等。
-
使用 Sync Framework 元數據並且可與其他 Sync Framework 提供程序一起參與拓撲。
還包括兩個僅支持脫機方案的附加數據庫同步提供程序。這兩個提供程序已被上述既支持脫機方案又支持協作方案的提供程序所取代。在本文檔中包括這些提供程序是作爲對使用它們的現有應用程序的參考。若要開發新應用程序,請使用上述提供程序。
僅供脫機使用的提供程序是:
-
DbServerSyncProvider
-
SqlCeClientSyncProvider
這些提供程序具有以下特徵:
-
適合於客戶端-服務器拓撲。
-
總是成對使用。例如,您不能通過使用 ServerSyncProvider 的兩個實例同步兩個服務器數據庫(改爲使用SqlSyncProvider 或DbSyncProvider)。
-
可能沒有協作提供程序複雜,但無法與其他 Sync Framework 提供程序一起參與拓撲。