Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与.NET序列化的版本兼容性?_.net_Serialization - Fatal编程技术网

与.NET序列化的版本兼容性?

与.NET序列化的版本兼容性?,.net,serialization,.net,Serialization,用.NET序列化实现版本兼容性的方法有哪些?我只能以一种相当一般的方式回答 要控制二进制序列化中的版本差异,请阅读以下MSDN文章: 关于XML序列化,我没有一篇文章,但MSDN解释了如何使用XML属性来控制序列化,这也有助于解决版本问题: OnDeserializedAttribute也有助于手动处理版本控制,您可以在此处默认新值,这些值不是从反序列化流中设置的: 如果你是说使用BinaryFormatter(通常就是它的作用所在)——不要;它(IMO)不适用于存储—仅适用于传输(在这里

用.NET序列化实现版本兼容性的方法有哪些?

我只能以一种相当一般的方式回答

要控制二进制序列化中的版本差异,请阅读以下MSDN文章:

关于XML序列化,我没有一篇文章,但MSDN解释了如何使用XML属性来控制序列化,这也有助于解决版本问题:

OnDeserializedAttribute
也有助于手动处理版本控制,您可以在此处默认新值,这些值不是从反序列化流中设置的:


如果你是说使用BinaryFormatter(通常就是它的作用所在)——不要;它(IMO)不适用于存储—仅适用于传输(在这里,版本控制问题要小得多,因为您可能控制管道的两端)。各种类型的许多其他序列化程序都可用;它们中的大多数都能很好地处理版本控制

我个人认为:

  • xml:XmlSerializer(DataContractSerializer在输出方面没有那么灵活,但可以处理图形)
  • json:JavaScriptSerializer
  • 二进制:protobuf网络(我在这里有偏见)
使用其中任何一个,在版本之间、添加成员、重命名字段等,您都应该很好

实际上,即使我只是在运输(而不是储存),我也会使用上面的3个