2008-12-23 18 views
1

我在項目上做了一些重要的重構和功能添加,並且剛剛打破了向後兼容我的數據。我通過創建一系列我用來存放數據的類中的子類來實現,並且在舊的序列化對象中加載不再有效。你會做什麼預工程來確保未來版本的應用程序的數據兼容性?

您採用什麼樣的預製或策略來避免這些情況類型?我應該完全忘記序列化嗎?這似乎特別容易出現這些問題。

回答

1

我使用XML。關於XML的一個小問題就是它可以在不破壞向後兼容性的情況下進行擴展。

換句話說...

<root> 
    <something one="1" two="2"/> 
</root> 

...從A版本,沒有問題是與...向後兼容

<root> 
    <something one="1" two="2" three="3"/> 
    <somethingElse five="5"/> 
</root> 

...從版本B.

+0

雖然如果你要這樣做,全力以赴。需要驗證,並使用大量裝飾器和噪聲,以便interop將使用完整的XML系統。像IM-XML這樣的真實世界的系統需要特定的訂單,而MRIS的XML訂閱源不過是一個CSV容器。 – geocar 2008-12-24 01:08:31

0

除了一般採用的是序列化機制這至少在一定程度寬容的變化,如dacracot介紹,我試圖設定,讓我可以做一些每級調整反序列化的過程。舊數據格式的轉換代碼很難看,但不像丟失所有序列化的代碼那麼醜陋。

相關問題