共用方式為


與提供者的互通性

中繼資料儲存服務會提供方法,協助簡化實作同步處理提供者的作業。這些方法可協助執行下列工作:

  • 來源提供者列舉變更。

  • 來源提供者在變更列舉期間篩選變更。

  • 目的地提供者取得項目之目的地版本給變更套用者。

  • 提供者或應用程式清除在中繼資料存放區內標示為刪除的項目。

  • 目的地提供者復原過時的目的地複寫。

列舉變更

複寫中繼資料物件包含方法,可在提供者做為來源提供者時列舉變更。在大部分情況下,提供者的 GetChangeBatch 方法實作可以透過直接傳遞其參數給複寫中繼資料物件實作來進行。

Managed 程式碼:若要列舉對來源複寫所做的變更,請呼叫 ReplicaMetadata 物件的 GetChangeBatch 方法。

Unmanaged 程式碼:若要列舉對來源複寫所做的變更,請呼叫 IReplicaMetadata::GetChangeBatch 方法。

篩選變更

篩選的同步處理是使用回呼來處理。回呼方法是在項目加入至變更批次之前呼叫。這樣可給回呼處理常式一個機會,檢查每個項目,並指出項目是否應該包含在批次中。

Managed 程式碼:若要篩選包含於變更批次中的變更,請實作 ItemFilterCallback 委派 (Delegate),然後傳遞給 GetFilteredChangeBatch

Unmanaged 程式碼:若要篩選包含於變更批次中的變更,請實作 IChangeBatchCallback,然後傳遞給 IReplicaMetadata::GetFilteredChangeBatch

取得目的地版本

複寫中繼資料物件提供方法,可協助目的地提供者透過為包含於來源提供者之變更批次中的項目,取得目的地複寫上版本,實作其 ProcessChangeBatch 方法。然後就可以將此目的地版本批次傳遞給變更套用者。

Managed 程式碼:若要取得包含適用於目的地版本的變更批次,請呼叫 ReplicaMetadata 物件的 GetLocalVersions 方法。

Unmanaged 程式碼:若要取得包含適用於目的地版本的變更批次,請呼叫 IReplicaMetadata::GetItemBatchVersions 方法。

清除已刪除項目

已從複寫刪除的項目會保留在中繼資料存放區中,並含指出此項目已刪除的值。若要避免在複寫上用盡儲存空間,就必須定期清除這些已刪除項目的中繼資料。複寫中繼資料物件提供 CleanupDeletedItems (適用於 Managed 程式碼) 或 IReplicaMetadata::CleanupDeletedItems (適用於 Unmanaged 程式碼) 方法,協助提供者定期清除已刪除的項目。提供者會指定時間問隔,代表保留在中繼資料存放區內已刪除項目的最低存在時間,並定期呼叫方法,例如在提供者每次執行變更偵測時。為了保護提供者免於執行耗費極大成本的完整列舉,清除方法只在過了指定時間之後才會清除已刪除項目,而且永遠都只保留不超過指定時間間隔的已刪除項目。清除方法也會更新被遺忘的知識,以反映被移除的已刪除項目。

復原過時複寫

若 Sync Framework 偵測到目的地複寫已過時,Sync Framework 就會觸發完整列舉,以還原目的地複寫。當來源複寫已自其中繼資料移除已刪除項目,但尚未將該項目刪除傳達給目的地複寫,目的地複寫就是已過時。若要執行完整列舉,Sync Framework 會呼叫來源提供者的 GetFullEnumerationChangeBatch 方法和目的地提供者的 ProcessFullEnumerationChangeBatch 方法。中繼資料儲存服務會提供方法,協助提供者實作這些方法。

Managed 程式碼:當來源提供者的 GetFullEnumerationChangeBatch 方法被呼叫時,來源提供者可以呼叫 ReplicaMetadata 物件的 GetFullEnumerationChangeBatch 方法。當目的地提供者的 ProcessFullEnumerationChangeBatch 方法被呼叫時,目的地提供者可以透過呼叫 ReplicaMetadata 物件的 GetFullEnumerationLocalVersions 方法,取得包含套用至目的地複寫之版本的變更批次。

Unmanaged 程式碼:當來源提供者的 GetFullEnumerationChangeBatch 方法被呼叫時,來源提供者可以呼叫 IReplicaMetadata::GetFullEnumerationChangeBatch。當目的地提供者的 ProcessFullEnumerationChangeBatch 方法被呼叫時,目的地提供者可以透過呼叫 IReplicaMetadata::GetFullEnumerationItemBatchVersions,取得包含套用至目的地複寫之版本的變更批次。

請參閱

參考

IReplicaMetadata 介面
IChangeBatchCallback 介面
ReplicaMetadata
ItemFilterCallback

其他資源

Sync Framework Metadata Storage Service