從不同版本的元件存取中繼資料
中繼資料儲存服務會將複寫和項目中繼資料儲存在輕量型資料庫中。中繼資料是以特定的資料表結構描述和二進位格式儲存,而此格式可能會在發行新版 Sync Framework 時變更。此外,資料庫中的自訂提供者欄位可能會在開發人員發行新版特定提供者時變更。為了讓不同的版本能夠有效互通,Sync Framework 提供了一種標準檔案格式以及 SyncMetadataStoreSerializer 類別 (適用於 Managed 程式碼) 或 ISyncMetadataStoreSerializer 介面 (適用於 Unmanaged 程式碼),以便在不同版本之間中繼資料變更的合理範圍內達到向前和回溯相容。
Sync Framework 也支援升級中繼資料存放區。如需詳細資訊,請參閱升級中繼資料存放區版本。
使用標準格式達到版本相容性
標準格式的其中一項重要優點就是讓部分參與者複寫 (例如裝置) 能夠與不同版本的提供者同步處理。請考量下列範例:
某個應用程式支援在裝置與位於不同企業辦公室的伺服器之間進行同步處理。使用者可以同步處理裝置與伺服器、在裝置上進行變更,以及與位於其他辦公室的伺服器同步處理等等。
公司的連絡人提供者已經發行三種不同的版本:1.0、2.0 和 2.5。1.0 版是以 Sync Framework 1.0 為基礎,而其他兩種版本則是以 Sync Framework 2.0 為基礎。此時,企業網路仍然可以使用並支援這三種版本。
Sync Framework 版本設定
如果此應用程式將中繼資料儲存在裝置上的中繼資料儲存服務二進位檔案中,中繼資料結構描述和格式可能會與使用者想要同步處理的提供者不相容。因為提供者的版本不同而且使用了不同的中繼資料檔案格式,或者提供者使用不同版本的 Sync Framework,所以可能會發生這種不相容的情況。若要避免這種問題發生,應用程式可以改用每部伺服器的二進位檔案,然後在這個檔案與每個裝置的標準檔案之間序列化和還原序列化中繼資料。此程序如下:
當裝置的第一個同步處理工作階段完成時,此應用程式會透過呼叫 SerializeReplicaMetadata (適用於 Managed 程式碼) 或 ISyncMetadataStoreSerializer::SerializeReplicaMetadata (適用於 Unmanaged 程式碼),將中繼資料序列化成裝置的標準檔案。
在每個後續的工作階段期間,此應用程式會執行下列動作:
呼叫 DeserializeReplicaMetadata (適用於 Managed 程式碼) 或 ISyncMetadataStoreSerializer::DeserializeReplicaMetadata (適用於 Unmanaged 程式碼),以便從標準檔案還原序列化中繼資料並將它套用至伺服器的二進位檔案。
同步處理裝置與伺服器之間的變更。
呼叫 SerializeReplicaMetadata (適用於 Managed 程式碼) 或 SerializeReplicaMetadata (適用於 Unmanaged 程式碼),以便將更新的中繼資料序列化回裝置。
這些序列化與還原序列化程序相當有效率:進行序列化時,從中繼資料儲存服務存放區中選取中繼資料的查詢會建立索引;進行還原序列化時,系統只會還原序列化標準檔案的累加變更。
提供者版本設定
SyncMetadataStoreSerializer 類別 (適用於 Managed 程式碼) 和 ISyncMetadataStoreSerializer 介面 (適用於 Unmanaged 程式碼) 方法會將提供者版本序列化成為中繼資料的一部分並且在還原序列化中繼資料時檢查預期的提供者版本,藉以支援提供者版本設定。請考慮下列狀況:
提供者有三種版本 (v1、v2 和 v3)。
在 v2 中,針對提供者的自訂結構描述進行了不相容的變更。
v2 與 v3 相容。
如果您從 v3 提供者序列化中繼資料,可以在中繼資料內指定 v2 值代表提供者版本。然後,v2 或 v3 提供者就可以透過指定 v2 值代表預期的提供者相容性版本參數,還原序列化中繼資料。v1 提供者會指定 v1 值,而且還原序列化應該會依照設計而失敗,因為中繼資料與 v1 不相容。一般而言,若要確保能夠與相同提供者的先前版本達到最高相容性層級,請盡可能使用最低版本。
當您發行了升級中繼資料結構描述的新版提供者,必須注意維持與舊版提供者的中繼資料相容性。如需詳細資訊,請參閱升級中繼資料存放區版本。