我在項目上做了一些重要的重構和功能添加,並且剛剛打破了向後兼容我的數據。我通過創建一系列我用來存放數據的類中的子類來實現,並且在舊的序列化對象中加載不再有效。你會做什麼預工程來確保未來版本的應用程序的數據兼容性?
您採用什麼樣的預製或策略來避免這些情況類型?我應該完全忘記序列化嗎?這似乎特別容易出現這些問題。
我在項目上做了一些重要的重構和功能添加,並且剛剛打破了向後兼容我的數據。我通過創建一系列我用來存放數據的類中的子類來實現,並且在舊的序列化對象中加載不再有效。你會做什麼預工程來確保未來版本的應用程序的數據兼容性?
您採用什麼樣的預製或策略來避免這些情況類型?我應該完全忘記序列化嗎?這似乎特別容易出現這些問題。
我使用XML。關於XML的一個小問題就是它可以在不破壞向後兼容性的情況下進行擴展。
換句話說...
<root>
<something one="1" two="2"/>
</root>
...從A版本,沒有問題是與...向後兼容
<root>
<something one="1" two="2" three="3"/>
<somethingElse five="5"/>
</root>
...從版本B.
除了一般採用的是序列化機制這至少在一定程度寬容的變化,如dacracot介紹,我試圖設定,讓我可以做一些每級調整反序列化的過程。舊數據格式的轉換代碼很難看,但不像丟失所有序列化的代碼那麼醜陋。
雖然如果你要這樣做,全力以赴。需要驗證,並使用大量裝飾器和噪聲,以便interop將使用完整的XML系統。像IM-XML這樣的真實世界的系統需要特定的訂單,而MRIS的XML訂閱源不過是一個CSV容器。 – geocar 2008-12-24 01:08:31