2011-03-03 90 views

回答

0

我只能用相當一般的方式回答。

對於二進制序列化控制版本差異過大,請閱讀下面的MSDN文章:

http://msdn.microsoft.com/en-us/library/ms229752(v=vs.80).aspx

對於XML序列化我沒有一篇文章,但MSDN進入解釋的XML屬性來使用控制序列化,這些也有助於應付版本問題:

http://msdn.microsoft.com/en-us/library/83y7df3e(v=VS.85).aspx

http://msdn.microsoft.com/en-us/library/2baksw0z(v=VS.85).aspx

OnDeserializedAttribute也有利於與手動版本應付,你可以在這裏默認新值是否是從反序列化流設置:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx

1

如果你的意思的BinaryFormatter(通常是哪裏這踢) - 不要; (IMO)不適合存儲 - 僅適用於傳輸(在這裏版本控制更不用說,因爲你可能控制管道的兩端)。許多其他各種串行器都可用;他們大多數應付就好了與版本控制。

就個人而言,我會去:

  • XML:XmlSerializer的(DataContractSerializer的是不是在輸出靈活,但可以處理圖形)
  • JSON:JavaScriptSerializer
  • 二進制:protobuf網(我在這裏優先)

與任何這些,你應該版本之間的罰款,添加成員,重命名字段等

其實,我會用上面的3 ,即使我只是在運輸(不存儲)。