序列化对象是否可移植?

时间:2014-04-04 14:12:32

标签: c# serialization

在我的C#应用​​程序中,我通过序列化保存了类对象。现在我的磁盘上有一个二进制文件。这个文件是否可移植,因为在其他系统上安装相同的应用程序会识别它?有缺点要考虑吗?

1 个答案:

答案 0 :(得分:2)

如果您拥有相同版本的应用程序,那么几乎任何序列化程序都会很高兴。当您开始迭代版本,然后假设您使用BinaryFormatter时,您可以开始遇到版本兼容性问题,特别是如果您已经重构(移动/重命名类型,移动/重命名字段等)。这就是为什么我强烈建议不使用 BinaryFormatter进行持久化。如果您只想存储数据,那么有很多其他的序列化器可以很好地工作; XmlSerializer,Json.NET,protobuf-net,DataContractSerializer等 - 它们都比BinaryFormatter更优雅地处理版本控制。如果出于性能原因(大文件等)特别想要二进制文件,那么protobuf-net可能值得一看(但我有偏见)。否则,你可以简单地使用compression-xml和json压缩。

此外,请注意BinaryFormatter在其他平台之间无法 ,或者通常甚至在其他.NET框架(包括移动框架等)上)。