中繼資料需求
Sync Framework 要求每個要同步處理的複寫和項目都有特定的一組中繼資料。
每個複寫都需要的中繼資料
每個複寫都必須儲存如下表中所顯示的一組中繼資料。
中繼資料元素 | 描述 |
---|---|
複寫識別碼 |
是同步處理社群中複寫的唯一識別碼。雖然複寫識別碼是彈性識別碼,因此可以由結構描述為社群定義,還是建議使用 16 位元組 GUID。傳遞給 Sync Framework 方法的複寫識別碼格式必須與提供者指定的格式相符。 Managed 程式碼:格式是由 SyncIdFormatGroup 類別的 ReplicaIdFormat 屬性指定。此識別碼是以 SyncId 類別表示。 Unmanaged 程式碼:格式是由 ID_PARAMETERS 結構 結構的 replicaId 欄位指定。此識別碼是以 SYNC_ID 結構表示。 |
目前的滴答計數 |
是複寫的目前滴答計數。請注意,這是概念性的數字,可以從每個項目知識中的最近本機版,或其他可供複寫使用的一些單純遞增值,推斷算出。例如,複寫可以使用目前的系統時間,只要能夠防止該值被重設即可。 Managed 程式碼:以 UInt64 表示。 Unmanaged 程式碼:以 ULONGLONG 表示。 |
複寫機碼對應 |
是複寫識別碼與 4 位元組機碼之間的對應。由於中繼資料內會重複出現複寫識別碼 (建議用 16 位元組 GUID),使用資料表將複寫識別碼對應為 4 位元組機碼會更有效率。然後再將這些機碼用於需要參考特定複寫的其他情況。 Managed 程式碼:使用 ReplicaKeyMap 來表示。 Unmanaged 程式碼:使用 IReplicaKeyMap 來表示。 |
目前的知識 |
是複寫對指定範圍所知道版本資訊的摘要。複寫知識是透過中繼資料服務進行操控,而不應該直接進行操控。 Managed 程式碼:使用 SyncKnowledge 來表示。 Unmanaged 程式碼:使用 ISyncKnowledge 來表示。 |
被遺忘的知識 |
可以讓複寫偵測到夥伴複寫不知道項目已刪除。這些刪除項目的標記已清除時,就可能會發生這種情形。被遺忘的知識是透過中繼資料服務進行操控。 Managed 程式碼:使用 ForgottenKnowledge 來表示。 Unmanaged 程式碼:使用 IForgottenKnowledge 來表示。 |
衝突記錄檔 |
是變更列舉後偵測到衝突而並未解決時所發生的衝突記錄檔。複寫必須保存衝突記錄檔。衝突記錄檔的表示是由複寫決定,而不必讓 Sync Framework 存取此記錄檔。 |
標記記錄檔 |
儲存有關從複寫刪除項目的資訊,以便讓刪除變更正確地在同步處理社群中傳播,並讓刪除項目不會在無意中重新導入。複寫必須保存標記記錄檔。標記記錄檔的表示是由複寫決定,而不必讓 Sync Framework 存取此記錄檔。 |
每個項目都需要的中繼資料
每個要同步處理的項目都必須有如下表中所顯示的一組中繼資料。
中繼資料元素 | 描述 |
---|---|
全域識別碼 |
是儲存於複寫中項目的識別碼。由於複寫負責產生全域識別碼,複寫可以配置讓列舉更有效率的全域識別碼。例如,社群可以將其全域識別碼格式定義為 GUID,前面有 8 位元組的前置字元。然後,前置字元就可以用來控制全域識別碼的排序順序。這可以讓提供者更容易使用範圍來列舉變更,而且由於一個範圍可以包含大批項目,當項目是以已排序群組來表示時,知識結構可以更精簡。如需全域識別碼格式的詳細資訊,請參閱彈性識別碼。 Managed 程式碼:格式是由 SyncIdFormatGroup 類別的 ItemIdFormat 屬性指定。此識別碼是以 SyncId 類別表示。 Unmanaged 程式碼:格式是由 ID_PARAMETERS 結構 結構的 itemId 欄位指定。此識別碼是以 SYNC_ID 結構表示。 |
目前的版本 |
是特定項目的最後更新版本。目前的版本包含最近更新項目的複寫機碼,以及進行變更時該複寫的滴答計數。 此版本是在項目使用變更單位時,依每個變更單位儲存。例如,連絡人可能在地址和電話號碼欄位具有跟其他不同的變更單位版本號碼。 Managed 程式碼:以 SyncVersion 表示。 Unmanaged 程式碼:以 SYNC_VERSION 表示。 |
建立版本 |
是建立項目時的版本。建立版本包含建立此項目的複寫機碼,以及建立此項目時該複寫的滴答計數。 Managed 程式碼:以 SyncVersion 表示。 Unmanaged 程式碼:以 SYNC_VERSION 表示。 |
儲存體需求
由於複寫決定全域識別碼的格式,儲存每個項目之中繼資料所需的空間各不相同。但是,當您使用 GUID 加上 8 位元組前置字元的建議格式時,所需的儲存體總空間是 48 位元組,如下表所示。
項目 | 位元組 |
---|---|
全域識別碼 |
24 (GUID + 8 位元組前置字元) |
目前的版本 |
12 (4 位元組複寫機碼 + 8 位元組滴答計數) |
建立版本 |
12 (4 位元組複寫機碼 + 8 位元組滴答計數) |
總計 48 位元組 |
請參閱
參考
IReplicaKeyMap 介面
SYNC_ID 結構
SYNC_GID 結構
SYNC_VERSION 結構
ReplicaKeyMap
SyncId
SyncGlobalId
SyncIdFormat
SyncIdFormatGroup
SyncVersion