共用方式為


共同作業同步處理的架構與類別

在離線和共同作業案例中,Sync Framework 可用於 2 層式架構和 N 層式架構。在這兩種架構中,活動會在「同步處理工作階段」期間發生:「同步處理協調者」會與兩個「同步處理提供者」通訊,以擷取及套用變更至每個資料庫。此提供者會搭配每一個資料表所需的特定 SQL 命令,將「同步處理配接器」用於該資料表。有些提供者會公開配接器,好讓您自訂這些命令。其他提供者會自動產生配接器,以減少與同步處理特定存放區有關的複雜度。

下圖顯示兩層架構:同步處理工作階段的所有元件都位於本機電腦,而且從本機電腦到遠端電腦上的資料庫之間具有直接連接。在同步處理工作階段期間,本機電腦就是起始同步處理的電腦。如果您要從一部以上的電腦起始同步處理,每一部電腦都必須包含圖中所示的所有元件。圖之後將會更詳細地描述這些元件。

雙層式混合同步處理的拓撲

下圖顯示 N 層式架構:需要其他元件,包括遠端電腦上的元件,而且與遠端資料庫之間的連接現在是由本機電腦上的 Proxy 及遠端電腦上的服務所處理。該 Proxy 和服務都必須由應用程式開發人員所實作。提供範例是為了降低與這個工作相關的複雜度。如同 2 層式架構中的作法,如果您要從一部以上的電腦起始同步處理,每一部電腦都必須包含所有元件。

N 層式混合同步處理的拓撲

資料庫

資料庫可以是任何版本的 SQL Server 2005 SP2 或更新版本 (包括 SQL Server Compact 3.5 SP1 或更新版本,32 位元和 64 位元版本) 或者是有提供 ADO.NET 提供者的其他資料庫。Sync Framework 會針對 SQL Server 和 SQL Server Compact 資料庫自動設定變更追蹤及中繼資料儲存體。如需詳細資訊,請參閱HOW TO:設定及執行共同作業同步處理 (SQL Server)。如果是非 SQL Server 資料庫,您必須佈建資料庫。如需詳細資訊,請參閱 HOW TO:佈建伺服器資料庫來進行共同作業同步處理 (非 SQL Server)

SyncOrchestrator

同步處理協調者以下列方式驅動同步處理:

  • 根據其 Direction 屬性判斷應該套用變更的順序和方向。

  • 呼叫要擷取的遠端同步處理提供者,並在遠端資料庫上套用變更。

  • 呼叫本機同步處理提供者,以擷取並套用本機資料庫的變更。

同步處理協調者也能為同步處理工作階段維護工作階段層級的資訊,並提供成功訊息、錯誤訊息及統計資料給起始同步處理的應用程式。如需詳細資訊,請參閱 SyncOrchestrator

SyncProvider (SqlSyncProvider、SqlCeSyncProvider 和 DbSyncProvider)

同步處理提供者會與每一個資料庫通訊,並保護同步處理協調者,避開資料庫的特定實作。如果是 SQL Server Compact 資料庫,請使用 SqlCeSyncProvider;如果是其他版本的 SQL Server,請使用 SqlSyncProvider。如果是其他資料庫,請使用 DbSyncProvider。所有的三個提供者都是衍生自 RelationalSyncProvider。同步處理提供者的主要活動如下所示:

  • 擷取從上一次同步處理工作階段以來發生在資料庫中的變更。

  • 套用累加變更至資料庫。

  • 偵測衝突變更。

注意

如果您使用 SqlCeSyncProvider 的兩個執行個體來同步處理兩個 SQL Server Compact 資料庫,您必須使用 N 層式架構。這種情況下不支援兩層架構。

SyncAdapter (DbSyncAdapter 和 SqlCeSyncAdapter)

同步處理配接器是以 ADO.NET 中的資料配接器為模型,針對每個同步處理的資料表而定義。同步處理配接器會將與資料庫互動所需的特定 SQL 命令提供給同步處理提供者。

如果是 SqlSyncProviderSqlCeSyncProvider 使用的同步處理配接器,Sync Framework 會自動產生命令 (SqlCeSyncAdapter 是私用性質,以減少與此存放區同步處理的複雜度)。如果是 DbSyncAdapter,您可建立此配接器及指定命令,例如,將另一部伺服器或另一個用戶端資料庫中的插入套用至伺服器資料庫的 InsertCommand。因為同步處理配接器使用 ADO.NET DbCommand 物件,因此您可以使用 ADO.NET 支援的任何命令結構。這包含內嵌 SQL、預存程序、單一資料表的檢視表、函式等等。命令只需要單一結果,此結果會定義要進行傳輸和套用的結構與資料。如需詳細資訊,請參閱 DbSyncAdapter。如需命令的詳細資訊,請參閱 HOW TO:設定及執行共同作業同步處理 (非 SQL Server)中的<同步處理配接器>。

API 中的其他類別

此主題中的圖例會顯示 API 中的主要類別。不過,還有很多類別是圖例中沒有顯示的。若要取得所有可用類別的詳細資訊,請參閱 Microsoft.SynchronizationMicrosoft.Synchronization.DataMicrosoft.Synchronization.Data.SqlServerMicrosoft.Synchronization.Data.SqlServerCe。下列章節提供您應該熟悉的其他重要類別介紹。

DbSyncScope

同步處理範圍是必須當做一個單位來同步處理之物件的邏輯群組。如果是資料庫同步處理,範圍通常是一組資料表以及可以篩選的資料表。資料表可以包含在一個或多個範圍內。如需詳細資訊,請參閱 HOW TO:佈建伺服器資料庫來進行共同作業同步處理 (非 SQL Server)中的<定義要同步處理的範圍>。

資料庫佈建物件

如果是 SQL Server 和 SQL Server Compact 資料庫,Sync Framework 會提供一組用來描述範圍及各範圍所含資料表的類別。描述資料表和範圍之後,您可以使用 Sync Framework 物件來將佈建的指令碼套用到每個節點。指令碼會建立變更追蹤及變更套用基礎結構,該基礎結構是由中繼資料表、觸發程序和預存程序所組成。下表列出用來設定資料庫和提供者的類別。如需詳細資訊,請參閱 HOW TO:設定及執行共同作業同步處理 (SQL Server)

SQL Server SQL Server Compact 描述

DbSyncScopeDescription

DbSyncScopeDescription

表示當做一個單位同步處理之邏輯資料表群組 (選擇性篩選) 的同步處理範圍。

SqlSyncScopeProvisioning

SqlCeSyncScopeProvisioning

表示針對 DbSyncScopeDescription 物件所代表的特定範圍佈建 SQL Server 或 SQL Server Compact 資料庫。

SqlSyncProviderScopeConfiguration

SqlCeSyncProviderScopeConfiguration

表示 SqlSyncProviderSqlCeSyncProvider 用於特定範圍的組態資訊。

DbSyncTableDescription

DbSyncTableDescription

表示包含在同步處理範圍內之資料表的結構描述。

DbSyncColumnDescription

DbSyncColumnDescription

表示資料行的結構描述,該資料行是包含在同步處理範圍內之資料表的一部分。

SqlSyncDescriptionBuilder

SqlCeSyncDescriptionBuilder

表示與同步處理相關之 SQL Server 或 SQL Server Compact 資料庫的範圍和資料表資訊。

SqlSyncTableProvisioning

SqlSyncTableProvisioning

表示佈建 DbSyncTableDescription 物件所代表的 SQL Server 或 SQL Server Compact 資料庫。

SqlSyncProviderAdapterConfiguration

SqlSyncProviderAdapterConfiguration

表示 SQL Server 或 SQL Server Compact 資料庫中資料表的同步處理配接器組態資訊。

SyncOperationStatistics

工作階段統計資料是由同步處理協調者為每個同步處理工作階段所提供的一組統計資料。這些統計資料包含有關同步處理時間、處理的變更數量,以及所有發生之衝突和例外狀況的資訊。如需詳細資訊,請參閱 SyncOperationStatistics

DbSyncSession

DbSyncSession 物件會提供同步處理工作階段變數的存取權。工作階段變數是針對開發人員所提供的變數,可當做在伺服器上執行的選取、插入、更新及刪除命令的參數使用,該命令會使用 DbSyncProviderDbSyncAdapter。如需詳細資訊,請參閱 HOW TO:使用共同作業同步處理的工作階段變數

Sync Framework DLL

Sync Framework 資料庫同步處理類別會包含在下列 DLL 中:

  • 包含 SyncOrchestrator 的 Microsoft.Synchronization.dll。

  • 包含 SqlSyncProvider 的 Microsoft.Synchronization.SqlServer.dll。

  • 包含 SqlCeSyncProvider 的 Microsoft.Synchronization.SqlServerCe.dll。

  • 包含 RelationalSyncProviderDbSyncProviderDbSyncAdapter 的 Microsoft.Synchronization.Data.dll。

這些 DLL 都相依於 .NET Framework 2.0 或更新版本中的 System.dll 和 System.Data.dll。

請參閱

概念

共同作業案例
HOW TO:設定及執行共同作業同步處理 (SQL Server)
同步處理其他 ADO.NET 相容的資料庫