資料同步處理的基礎

Microsoft Sync Framework 會使用三個基本元件,同步處理資料存放區或「複寫」(Replica):一個同步處理工作階段和兩個同步處理提供者。若要同步處理資料,應用程式會建立同步處理工作階段,並傳遞給來源提供者和目的地提供者。此工作階段會使用來源地提供者,以取得在來源複寫上發生的新變更,並使用目的地提供者,將這些變更套用到目的地複寫。

建立提供者最需要進行開發工作。提供者會為複寫維護中繼資料和知識,並為要進行同步處理的每個項目維護中繼資料。提供者也會與其資料存放區來回傳輸實際的項目資料。提供者會使用 Sync Framework 元件,在做為來源時,協助列舉變更;並在做為目的地時,偵測衝突並套用變更。

同步處理演算法

單向同步處理的演算法包括下列步驟:

  1. 工作階段取得目的地複寫的目前知識,然後傳送給來源提供者。

  2. 來源提供者列舉沒有包含在目的地知識中的變更。

  3. 來源提供者傳送變更給工作階段。

  4. 工作階段偵測衝突,並透過目的地提供者套用變更至目的地複寫。

兩個複寫之間的雙向同步處理是透過兩個單向同步處理來完成。

Managed 程式碼SyncOrchestrator 物件會在 Direction 屬性設定為 DownloadAndUploadUploadAndDownload 時,執行兩個單向同步處理。

Unmanaged 程式碼:應用程式必須為每個單向同步處理建立 ISyncSession 物件。

中繼資料管理

每個複寫都必須提供一組描述本身及其知識的中繼資料給「同步處理社群」(Synchronization Community)(同步處理社群是可彼此保持同步的一組複寫)。每個複寫所需要的中繼資料包括:複寫識別碼、目前的滴答計數、複寫機碼對應、目前的知識、被遺忘的知識、衝突記錄檔,以及標記記錄檔。複寫也必須為要進行同步處理的每個項目維護中繼資料。每個項目所需的中繼資料是:全域識別碼、目前版本,以及建立版本。一般來說,同步處理提供者會管理同步處理所需的中繼資料。但是依複寫的實作而定,部分中繼資料管理交由不同的元件處理可能會更有用,例如依排定的時間而不是在同步處理期間清除標記的服務。

如需中繼資料的詳細資訊,請參閱中繼資料需求

同步處理提供者

提供者為複寫管理中繼資料,並使用 Sync Framework,列舉變更及偵測衝突。提供者也會在擔任來源提供者時,使用複寫的項目存放區來傳送項目資料,並在擔任目的地提供者時,套用變更。

Managed 程式碼:提供者會從 KnowledgeSyncProviderIChangeDataRetrieverINotifyingChangeApplierTarget 實作抽象方法和屬性。

Unmanaged 程式碼:提供者會實作 IKnowledgeSyncProviderISyncProviderISynchronousDataRetrieverISynchronousNotifyingChangeApplierTarget 介面 (或為非同步提供者實作非同步版本)。

如需同步處理提供者以及如何實作並使用這些介面的詳細資訊,請參閱同步處理提供者

同步處理應用程式

應用程式是一種元件,會建立同步處理工作階段物件、將此物件與提供者連接,並裝載同步處理執行階段。

使用 Managed 程式碼實作同步處理應用程式

若要啟動同步處理,請建立 SyncOrchestrator 物件,然後將 LocalProviderRemoteProvider 屬性設定為要同步處理之兩個提供者的 SyncProvider 介面。應用程式會透過使用適當的任何方法,取得或建立提供者介面。建立 SyncOrchestrator 物件之後,呼叫 Synchronize 以啟動同步處理。此時,Sync Framework 會進行所有必要的呼叫進入兩個提供者中,以執行同步處理。

SyncOrchestrator 物件和 KnowledgeSyncProvider 物件都會在同步處理期間引發事件。若要接到事件,請實作事件的處理常式方法,並註冊以便接收事件。

使用 Unmanaged 程式碼實作同步處理應用程式

若要啟動同步處,請透過傳遞 CLSID_SyncServicesIID_IApplicationSyncServicesCoCreateInstance 函式,然後在傳回的 IApplicationSyncServices 物件上,呼叫 IApplicationSyncServices::CreateSyncSession 物件,以建立 ISyncSession 物件。

CreateSyncSession 方法需要有要進行同步處理之兩個提供者的 ISyncProvider 介面。應用程式會透過使用適當的任何方法,取得或建立提供者介面。建立 ISyncSession 物件之後,呼叫 ISyncSession::Start 以啟動同步處理。此時,Sync Framework 會進行所有必要的呼叫進入兩個提供者中,以執行同步處理。

ISyncSession 物件會在同步處理期間引發事件。若要接到事件,請使用 ISyncSession::RegisterCallback,實作 ISyncCallback 介面並加以註冊。

請參閱

參考

ISyncSession 介面
ISyncProvider 介面
IKnowledgeSyncProvider 介面
ISynchronousDataRetriever 介面
ISynchronousNotifyingChangeApplierTarget 介面
IApplicationSyncServices 介面
IProviderSyncServices 介面
ISyncCallback 介面
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

概念

中繼資料需求
同步處理提供者
同步處理應用程式

其他資源

Microsoft Sync Framework