是可移植的序列化对象

本文关键字:对象 序列化 可移植 | 更新日期: 2023-09-27 17:56:54

在我的 C# 应用程序中,我通过序列化保存了类对象。现在我的磁盘上有一个二进制文件。从某种意义上说,在其他系统上安装同一应用程序将重新识别它,此文件是否可移植?是否有缺点需要考虑?

是可移植的序列化对象

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

此外,请注意,BinaryFormatter在其他平台之间根本不起作用,甚至通常在其他 .NET 框架(包括移动框架等)上都不起作用。