實作標準的自訂提供者
在 Microsoft Sync Framework 中,同步處理提供者是可以讓複寫將其資料與其他複寫同步處理的軟體元件。同步處理應用程式可以透過使用同步處理工作階段,連接目的地提供者與來源提供者,將已在來源複寫上變更的項目同步處理至目的地複寫。同步處理提供者的簡單範例是管理檔案系統中資料夾的提供者。此提供者可以與其他也是管理資料夾的提供者連接,以同步處理其資料夾中的檔案與其他提供者資料夾中的檔案。
在同步處理期間,目的地提供者會提供其目前知識、接受來源的變更清單、偵測該清單及其本身項目之間的任何衝突、可能會篩選項目的清單,並套用變更至其資料存放區。來源提供者會使用目的地複寫的目前知識,判斷哪些是在來源複寫中而目的地複寫並不知道的變更、可能會篩選變更的清單,然後傳送一份變更清單給目的地提供者。Sync Framework 會提供元件,代表這些提供者處理許多這類工作。
實作同步處理提供者
同步處理提供者可以透過使用 Managed 或 Unmanaged 程式碼進行實作。
安全性附註 |
---|
Sync Framework 將同步處理提供者視為信任的程式碼。因此,叫用同步處理提供者的應用程式必須透過具有提供者的明確知識,或透過使用一些其他機制 (如數位簽名),確立提供者是受信任的。 |
使用 Managed 程式碼實作同步處理提供者
開發提供者時的主要工作是,實作 KnowledgeSyncProvider 抽象類別 (從 SyncProvider 抽象類別繼承) 以及 IChangeDataRetriever 和 INotifyingChangeApplierTarget 介面。
同步處理開始之前,提供者必須先透過使用應用程式需要的任何機制,讓 SyncProvider 的實作可供同步處理應用程式使用。
在一般同步處理期間,Sync Framework 會進行下列基本呼叫:
BeginSession 是在兩個提供者上呼叫。這會通知提供者,它正在聯結同步處理工作階段。
GetSyncBatchParameters 是在目的地提供者上呼叫。目的地提供者會傳回其知識和要求的批次大小。
GetChangeBatch 是在來源提供者上呼叫,然後傳遞目的地提供者的知識。來源提供者使用目的地提供者的知識以偵測變更,並傳回變更批次。如需詳細資訊,請參閱列舉變更。
ProcessChangeBatch 是在目的地提供者上呼叫,然後傳遞來源提供者的變更清單。目的地提供者使用 Sync Framework 變更套用者元件,以偵測衝突並套用變更。如需詳細資訊,請參閱處理衝突和套用變更。
LoadChangeData 是在批次中每個變更的來源提供者上呼叫。來源提供者會傳回介面至其資料傳輸機制。
SaveItemChange 是在批次中每個變更的目的地提供者上呼叫。目的地提供者使用來源的傳輸機制,以傳輸與變更相關聯的資料。
StoreKnowledgeForScope 是在目的地提供者上呼叫。目的地提供者會儲存傳遞進來做為其目前知識的知識。
EndSession 是在兩個提供者上呼叫。這會通知提供者,它正離開先前聯結的同步處理工作階段。
如需如何建立同步處理提供者的詳細資訊,請參閱 HOW TO:建立 Managed 同步處理提供者。
使用 Unmanaged 程式碼實作同步處理提供者
開發提供者時的主要工作是實作 IKnowledgeSyncProvider、ISyncProvider、ISynchronousDataRetriever 和 ISynchronousNotifyingChangeApplierTarget 介面。其中一些介面也有非同步版本,請參閱 IAsynchronousDataRetriever 介面 和 IAsynchronousNotifyingChangeApplierTarget 介面。
同步處理開始之前,提供者必須先透過使用應用程式需要的任何機制,讓 ISyncProvider 的實作可供同步處理應用程式使用。
在一般同步處理期間,Sync Framework 會進行下列基本呼叫:
BeginSession 是在兩個提供者上呼叫。這會通知提供者,它正在聯結同步處理工作階段。
GetSyncBatchParameters 是在目的地提供者上呼叫。目的地提供者會傳回其知識和要求的批次大小。
GetChangeBatch 是在來源提供者上呼叫,然後傳遞目的地提供者的知識。來源提供者使用目的地提供者的知識以偵測變更,並傳回變更批次。如需詳細資訊,請參閱列舉變更。
ProcessChangeBatch 是在目的地提供者上呼叫,然後傳遞來源提供者的變更清單。目的地提供者使用 Sync Framework 變更套用者元件,以偵測衝突並套用變更。如需詳細資訊,請參閱處理衝突和套用變更。
LoadChangeData 是在批次中每個變更的來源提供者上呼叫。來源提供者會傳回介面至其資料傳輸機制。
SaveChange 是在批次中每個變更的目的地提供者上呼叫。目的地提供者使用來源的傳輸機制,以傳輸與變更相關聯的資料。
SaveKnowledge 是在目的地提供者上呼叫。目的地提供者會儲存傳遞進來做為其目前知識的知識。
EndSession 是在兩個提供者上呼叫。這會通知提供者,它正離開先前聯結的同步處理工作階段。
如需如何建立同步處理提供者的詳細資訊,請參閱 HOW TO:建立 Unmanaged 同步處理提供者。
請參閱
參考
IKnowledgeSyncProvider 介面
ISynchronousDataRetriever 介面
ISyncProvider 介面
ISynchronousNotifyingChangeApplierTarget 介面
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
概念
Microsoft Sync Framework
HOW TO:建立 Unmanaged 同步處理提供者
列舉變更
處理衝突
套用變更
同步處理變更單位
報告同步處理進度
篩選同步處理資料
報告並行同步處理工作
標準自訂提供者設計的考量
與 FeedSync 摘要的互通性
復原過時複寫