Share via


Sync Framework 2.0 的新功能

Sync Framework 2.0 包括以下方面的新功能和增強功能:

  • 資料庫提供者

    • 適用於 SQL Server 和 SQL Server Compact 的新提供者

    • 以記憶體為基礎功能強大的批次處理

    • 佈建和管理 API

    • 快照集初始化

    • 有關拓撲形狀的彈性

    • 效能改進

  • 檔案同步處理提供者

    • 資料轉換
  • 自訂提供者

    • 簡單提供者

    • 在提供者之間轉換資料

    • 篩選

    • 衝突處理

    • 追蹤

    • 變更套用服務

    • 中繼資料儲存服務序列化程式

    • 提供者轉換器

    • 知識的改善

    • 相容性層級

    • 過時的介面

資料庫提供者

Sync Framework 2.0 導入兩個新的資料庫提供者、一些重要的同步處理和管理相關功能,以及大幅的效能改進。

適用於 SQL Server 和 SQL Server Compact 的新提供者

Sync Framework 2.0 包含兩個新的資料庫提供者:

  • SqlCeSyncProvider 是用來同步處理 SQL Server Compact 資料庫。

    這個提供者可以用來與中央伺服器同步處理,不過也可以用來與其他用戶端同步處理,這一點是使用 SqlCeClientSyncProvider 做不到的。這種能力可以讓開發人員以新的案例 (例如共同作業案例) 為目標,在這種案例中,不同團隊人員需要在沒有連線到中央伺服器的情況下彼此進行同步處理。

  • SqlSyncProvider 是用來與任何其他版本的 SQL Server (包括 SQL Server Express) 同步處理。

    這個可以當成伺服器或用戶端使用的提供者,大幅減少了同步處理 SQL Server 資料庫的障礙。SqlSyncProvider 的功能就如同 DbSyncProvider,但所需程式碼則大幅減少,也不需要深入了解 Sync Framework 用來同步處理資料的查詢。DbSyncProvider 仍然適合非 SQL Server 資料庫。

就像所有 Sync Framework 提供者一樣,這些新提供者可以使用在任何形狀的拓撲中:用戶端-伺服器、點對點等等。如需這兩種提供者的詳細資訊,請參閱 HOW TO:設定及執行共同作業同步處理 (SQL Server)

以記憶體為基礎功能強大的批次處理

舊版的 Sync Framework 和 Sync Services for ADO.NET 為開發人員提供了定義自己的批次處理邏輯的方法,並且會在稍後由 Sync Framework 執行階段呼叫。這種做法的缺點包括:將變更分配到不同批次所造成的複雜性、用戶端與伺服器間過多網路往返作業,而且無法解決資源爭用的問題,因為各批次是以同步處理的資料列數目為依據,而非每一批次耗用的記憶體數量。

Sync Framework 2.0 是藉由提供更簡單且功能強大的批次處理 API 來解決這些所有的問題。開發人員不再需要自行撰寫批次處理邏輯,因為 Sync Framework 執行階段會依據 API 中的一些屬性將變更分配到各個批次。批次現在是由記憶體耗用量來定義,不再依據同步處理的資料列數目,這種方式消除了大部分常見案例中記憶體不足的問題。如需詳細資訊,請參閱 HOW TO:以批次傳遞變更 (SQL Server)

佈建和管理 API

先前只能透過 Visual Studio 工具應用公開的佈建和初始化活動,現在已加入到資料庫提供者 API。這包括利用加入變更追蹤資料表和 Sync Framework 所需觸發程序來佈建現有資料庫的能力。同時也包括用空白資料庫開始、建立使用者結構描述,以及依據已經佈建的另一個伺服器或用戶端資料庫佈建該結構描述的能力。如需詳細資訊,請參閱 HOW TO:設定及執行共同作業同步處理 (SQL Server)

一些常見工作 (例如資料庫備份與還原及中繼資料清除) 現在可以直接透過此 API 完成,不需要再由開發人員實作自己的邏輯。如需詳細資訊,請參閱 HOW TO:備份和還原資料庫 (SQL Server)HOW TO:清除共同作業同步處理的中繼資料 (SQL Server)

快照集初始化

在 SQL Server Compact 用戶端資料庫可以開始從另一個資料庫接收變更之前,此用戶端資料庫必須包含資料表結構描述及任何初始資料,以及 Sync Framework 所需的變更追蹤基礎結構。Sync Framework 提供兩個方法來初始化資料庫。

  • 用戶端資料庫的完整初始化

    完整初始化在某些情況下是恰當的,但是並不適合用戶端資源有限的情況。從頭開始建立資料庫結構描述並且在慢速網路連線上載入所有資料,可能會造成冗長的初始同步處理時間和記憶體不足的錯誤。

  • 使用已存在的用戶端資料庫針對此用戶端資料庫進行快照集初始化

    在 Sync Framework 2.0 導入的快照集初始化目的就是要減少初始化用戶端資料庫所需的時間。當已經使用完整初始化來初始化一個用戶端資料庫之後,後續的資料庫可以使用第一個用戶端資料庫的「快照集」(Snapshot) 來初始化。快照集是特別準備的 SQL Server Compact 資料庫,其中包含資料表結構描述、資料 (選擇性) 和變更追蹤基礎結構。快照集初始化可以大幅改善初始同步處理時間,並明顯降低記憶體爭用的情況。如需詳細資訊,請參閱 HOW TO:設定及執行共同作業同步處理 (SQL Server) 中的<佈建用戶端>。

有關拓撲形狀的彈性

舊版的 Sync Services for ADO.NET 必須依賴特定的拓撲形狀,在這種拓撲中許用戶端必須透過中央伺服器來同步處理變更。

由於 Sync Services for ADO.NET 現在是以 Sync Framework 為基礎建置的,所以開發人員能夠以範圍更為廣泛的案例為目標。例如,開發人員可以支援必須能在用戶端之間同步處理變更的共同作業案例。此外,開發人員也能夠以分公司辦公室案例為目標進行開發。在這種案例中,一系列銷售點 (POS) 終端機要與分公司伺服器同步處理,而後者又要與總公司中央伺服器同步處理。

由於這些新資料庫提供者是以 Sync Framework 為基礎建置的,所以此階段是設定為以新的存放區類型 (例如 Azure SQL 資料服務) 支援變更的同步處理。

效能改進

這個版本中的新資料庫提供者已針對各種案例經過大規模的徹底測試,在這些案例中單一伺服器必須支援數以千計的用戶端進行數以百計的並行同步處理作業。這項測試達成了大幅度的內部效能改善,讓 Sync Framework 資料庫提供者的執行效能足可媲美其他 Microsoft 技術 (例如遠端資料存取 (RDA)),同時又能提供可與端對端解決方案 (例如合併式複寫) 競爭的各種功能。

檔案同步處理提供者

除了可使用於任何自訂提供者類型的資料轉換 API 以外,Sync Framework 2.0 也包含專供檔案同步處理提供者使用的轉換 API。如需詳細資訊,請參閱同步處理檔案同步處理提供者與其他提供者IFileDataRetriever (Managed 程式碼) 及 IFileDataRetriever (Unmanaged 程式碼)。

自訂提供者

Sync Framework 2.0 對標準自訂提供者的各項功能有顯著的改善,並且導入了新的自訂提供者類型:簡單提供者。

簡單提供者

簡單提供者 API 會減少開發提供者所需的工作量。特別是當資料來源擁有很少的同步處理相關功能 (例如變更追蹤) 時。此 API 可讓開發人員撰寫提供者,而不必成為同步處理專家。簡單提供者的大部分程式碼是與資料來源互動所需的程式碼。如需詳細資訊,請參閱實作簡單的自訂提供者自訂提供者的基本原則

以 Managed 程式碼撰寫的重要新型別

如需完整型別清單,請參閱 Microsoft.Synchronization.SimpleProviders

以 Unmanaged 程式碼撰寫的重要新介面

如需完整型別清單,請參閱 Sync Framework 簡單提供者元件

在提供者之間轉換資料

在某些案例中,同步處理提供者會同步處理相同類型的資料 (例如銷售資料),但是每一個提供者所需的資料格式各不相同。為了處理這個情況,Sync Framework 會讓您實作介面,將資料轉換成每個提供者所需要的格式。如需詳細資訊,請參閱在提供者之間轉換資料

以 Managed 程式碼撰寫的新型別和屬性

以 Unmanaged 程式碼撰寫的新介面

篩選

篩選是用來控制同步處理的資料。Sync Framework 2.0 新增了可控制哪些變更單位會同步處理的篩選支援,以及開發人員所撰寫的自訂篩選支援。Sync Framework 2.0 也讓提供者能夠交涉哪些篩選會在同步處理期間使用。

如需詳細資訊,請參閱篩選同步處理資料

變更單位篩選

變更單位是同步處理之項目的一部分,例如連絡人項目中的電話號碼。不同的複寫可能會有相同項目的不同表示法,某些複寫會提供比其他複寫更為豐富且更完整的表示法。例如,同步處理社群會交換連絡人資訊,並定義 name、phone number 和 address 的變更單位。社群中的複寫是行動裝置,只能儲存 name 和 phone number。Sync Framework 會配合這個情況,其方式是讓提供者指定變更單位篩選,這表示複寫只能夠儲存資料的子集。同步處理中繼資料和同步處理程序都已經增強,以便能夠有效率地處理這個篩選。

以 Managed 程式碼撰寫的新型別

以 Unmanaged 程式碼撰寫的新介面和方法

自訂篩選

自訂篩選是由開發人員所撰寫,且可以是任何形式。「篩選的複寫」(Filtered Replica) 只會儲存篩選內項目的項目資料,例如只會儲存評比為三顆星 (含) 以上之歌曲的媒體儲存複寫。當歌曲的評比變更時,項目就可能會移出或移入篩選。開發人員可以定義自訂篩選,以控制儲存於篩選的複寫上的項目資料。「篩選追蹤複寫」(Filter-tracking Replica) 是社群上的另一個複寫,可用來識別篩選內的項目以及哪些項目最近已經移入或移出篩選。篩選追蹤複寫可以儲存不在篩選內之項目的項目資料。Sync Framework 支援從篩選追蹤複寫到篩選的複寫的有效率同步處理,其方式是只傳送篩選內的項目,連同有關此篩選的資訊。從篩選的複寫將變更傳送到篩選追蹤複寫時,Sync Framework 會正確計算篩選追蹤複寫的知識和其他中繼資料。

請注意,簡單提供者、報告條件約束衝突的提供者,或使用變更套用服務的提供者,都不可使用自訂篩選,否則可能會發生非預期的結果。

以 Managed 程式碼撰寫的重要新型別

提供者會實作下列型別:

Sync Framework 會實作下列型別:

如需完整型別清單,請參閱 Microsoft.Synchronization

以 Unmanaged 程式碼撰寫的重要新介面

提供者會實作下列介面:

Sync Framework 會實作下列介面:

如需完整介面清單,請參閱 Sync Framework 核心元件

提供者交涉的篩選

當目的地資料來源只儲存可用的資料子集時,來源提供者使用篩選來列舉只能由目的地儲存的資料會比較有效率。篩選交涉可讓目的地提供者指定來源提供者應該在變更列舉期間使用一個或多個篩選;來源提供者可以接受或拒絕篩選。如果來源提供者不支援任何要求的篩選,目的地提供者可選擇接收所有資料,然後自己執行篩選。Sync Framework 會適當地呼叫提供者來交涉篩選的使用。

以 Managed 程式碼撰寫的新型別

以 Unmanaged 程式碼撰寫的新介面

衝突處理

Sync Framework 2.0 新增了條件約束衝突、記錄的衝突以及實作最後一個寫入者優先之衝突解決方案的增強型支援。

條件約束衝突

Sync Framework 2.0 增強了「條件約束衝突」(Constraint Conflict) 的支援,這是指違反在項目或變更單位上所設之條件約束 (例如資料夾的關聯性或檔案系統之中名稱完全相同之資料的位置) 的衝突。目的地提供者可以將條件約束衝突回報給 Sync Framework,並使用 Sync Framework 元件解決衝突,並判斷如何將解決方案套用到目的地複寫。

請注意,使用自訂篩選或變更套用服務的提供者不可使用條件約束衝突,否則可能會發生非預期的結果。

如需詳細資訊,請參閱偵測及解決條件約束衝突

以 Managed 程式碼撰寫的重要新型別及更新的型別

目的地提供者會實作下列新的類別:

同步處理應用程式會在下列類別中實作新的方法:

Sync Framework 會在下列類別中實作新的成員:

如需完整型別清單,請參閱 Microsoft.Synchronization

以 Unmanaged 程式碼撰寫的重要新介面

目的地提供者會實作下列新的介面:

同步處理應用程式會實作下列新的介面:

Sync Framework 會實作下列新的介面:

如需完整介面清單,請參閱 Sync Framework 核心元件

記錄衝突

將衝突儲存到記錄檔中可能會很實用,這樣可以與同步處理工作階段分開來處理衝突,例如當使用者需要檢閱衝突,並決定如何解決衝突時。Sync Framework 2.0 會定義一組衝突記錄介面,並提供元件來幫助管理記錄檔中的衝突。Sync Framework 也針對不包含衝突記錄檔的複寫提供了衝突記錄介面的實作。這個實作會在記憶體中運作,而且可用來儲存由於條件約束衝突處理所可能產生的暫時性衝突。如需詳細資訊,請參閱記錄及管理衝突

以 Managed 程式碼撰寫的新型別

提供者會實作下列新的類別:

Sync Framework 會實作下列新的類別:

以 Unmanaged 程式碼撰寫的新介面

提供者會實作下列新的類別:

Sync Framework 會實作下列新的類別:

最後一個寫入者優先的衝突解決方案

應用程式可能會想要以「保留最新的變更,不論進行變更者為何」的方式來解決「並行衝突」(Concurrency Conflict) (也就是某個項目由一個以上的複寫所更新的情況)。Sync Framework 2.0 支援這個解決方案,其方式是針對應用程式提供一個機制來擷取在來源複寫上進行變更的時間以及在目的地複寫上進行變更的時間。然後應用程式可以比較這兩個時間,並指定最後一次變更所適用的衝突解決動作。

如需詳細資訊,請參閱偵測及解決並行衝突

以 Managed 程式碼撰寫的新型別

提供者會實作下列新的介面:

以 Unmanaged 程式碼撰寫的新介面

提供者會實作下列新的介面:

追蹤

Sync Framework 可讓您追蹤許多元件的執行作業,這在應用程式偵錯期間很有用。對於大部分 Sync Framework 元件而言,追蹤是使用 Windows 事件追蹤 (ETW) 基礎結構在機器碼層級執行。即使您是針對 Managed 版本的 API 開發,仍然可以使用 ETW,因為 Managed API 是原生 API 上方的薄型包裝函式。如需詳細資訊,請參閱追蹤 Sync Framework 元件

Sync Framework 資料庫提供者會提供以 .NET Framework 實作為基礎的 Managed 追蹤。如需詳細資訊,請參閱 HOW TO:追蹤同步處理程序

變更套用服務

Sync Framework 包含大多數應用程式用來套用變更至複寫的變更套用者實作。在 2.0 版中,Sync Framework 引進了變更套用服務,此服務會執行與變更套用者相同的動作,但是其執行的方式會更精細。需要比標準變更套用者擁有更大彈性的目的地提供者可以使用變更套用服務,以便只執行所需的動作集合。

請注意,報告條件約束衝突或使用自訂篩選的提供者不可使用變更套用服務,否則可能會發生非預期的結果。

如需詳細資訊,請參閱使用變更套用服務來套用變更

以 Managed 程式碼撰寫的新型別

以 Unmanaged 程式碼撰寫的新介面和列舉

中繼資料儲存服務序列化程式

中繼資料儲存服務會將複寫和項目中繼資料儲存在輕量型資料庫中。中繼資料是以特定的資料表結構描述和二進位格式儲存,而此格式可能會在發行新版 Sync Framework 時變更。此外,資料庫中的自訂提供者欄位可能會在開發人員發行新版特定提供者時變更。為了讓不同的版本能夠擁有更高的互通性,Sync Framework 提供了一種標準檔案格式以及一組序列化介面,以便在不同版本之間中繼資料變更的合理範圍內能夠與舊版和新版相容。如需詳細資訊,請參閱從不同版本的元件存取中繼資料升級中繼資料存放區版本

以 Managed 程式碼撰寫的新型別

以 Unmanaged 程式碼撰寫的新介面

提供者轉換器

自訂提供者通常是衍生自 IKnowledgeSyncProvider,但也可以直接衍生自 ISyncProvider。但是,當使用 ISyncSession 物件來管理同步處理時 (這是常見的作法),提供者必須衍生自 IKnowledgeSyncProvider。為了讓衍生自 ISyncProvider 的提供者參與同步處理工作階段,Sync Framework 會讓您在執行階段將提供者轉換成 IKnowledgeSyncProvider

以 Unmanaged 程式碼撰寫的新介面和方法

知識的改善

Sync Framework 2.0 改良了知識物件,可獲得更大的彈性及更高的效率。

知識結構

Sync Framework 2.0 將知識物件的基礎結構變更為一種更有彈性和效率的格式,並定義新介面來存取新的知識元素。為了能夠擁有回溯相容性,新的知識物件也會模擬 Sync Framework 1.0 知識方法的輸出。

以 Managed 程式碼撰寫的新型別及更新的型別

以 Unmanaged 程式碼撰寫的新介面和列舉

Sync Framework 2.0 新增了知識 Cookie,知識 Cookie 是指在效能特別重要時,可用於快速比較之知識的輕量型唯讀表示法。

以 Managed 程式碼撰寫的新型別和成員

以 Unmanaged 程式碼撰寫的新列舉和方法

相容性層級

Sync Framework 包含中繼資料的相容性層級,讓不同版本的元件能夠繼續正確地相互溝通。如需詳細資訊,請參閱 Sync Framework 回溯相容性和互通性

以 Managed 程式碼撰寫的新型別和成員

以 Unmanaged 程式碼撰寫的新列舉和方法

過時的介面

下列介面已過時,不應使用在新的開發案例中。它們在 Sync Framework 2.0 中仍可正常運作,但是可能會在後續的版本中移除。

以 Unmanaged 程式碼撰寫的過時介面

請參閱

概念

Microsoft Sync Framework
使用 Sync Framework 的優點
選取適當的 Sync Framework 元件