2011-03-03 91 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 ,即使我只是在运输(不存储)。