2010-06-09 101 views
9

我怎麼知道,我可以放心地在生產系統升級Boost Serialization Library不中斷與現有數據的兼容性?是否有任何測試應該執行,以確保新版本庫的二進制格式存儲的所有數據都能被新版本成功讀取? Boost Serialization庫本身是否保證版本之間的某種兼容性?升壓串行化庫升級

回答

9

Boost.serialization是向後兼容的,但is not guaranteed to be forwards compatible

這意味着:

  • 你可以boost.serialization的舊版本,可以用較新的版本可以讀取創建存檔。
  • 無法保證使用較新版本的boost.serialization創建的檔案可以被舊版本讀取。

例如,如果在兩個方向上在客戶端和服務器之間發送消息,則可能必須以鎖步方式升級boost版本。

的「有線格式」不改變每版本提振。因此,在兩個特定版本的boost之間,您可能沒有任何問題 - 我無法找到在哪個版本的boost中使用哪種版本的存檔格式的具體文檔。

還要注意保持向後兼容性「保證」,這只是表達一種意圖 - 雖然我想你可以拿回自己的錢;-)。 Boost版本1.42和1.43有一個錯誤,這意味着後來的版本無法讀取它們 - see the 1.45 release notes

1

您可以使用當前版本的軟件創建測試文件,並將其儲存。然後將這些文件加載​​到自動測試中。

不幸的是,即使你的代碼將通過這個測試,你不能100%肯定的兼容性,因爲還有可能是某種無法加載序列化的內容。那麼,它總比沒有好。

此測試將自動僅覆蓋向後兼容性。測試向前(向上)兼容性會更加複雜。一個需要爲每一個新版本創建的測試數據,並嘗試通過每一箇舊版本加載它...升壓

向前延伸兼容性::序列化是answered here