将 XmlSerializer 替换为 BinarySerializer.我应该知道什么

本文关键字:什么 我应该 BinarySerializer XmlSerializer 替换 | 更新日期: 2023-09-27 17:56:17

我一直在使用XmlSerializer将我的Project类序列化为文件。它包含各种信息。大多数东西都是由XmlSerializer自动完成的,除了一两个实现IXmlSerializable的类。现在我想切换到二进制序列化程序只是为了使文件更小。我仍然不想序列化私有字段或类似的东西。我只是希望它的行为与 XmlSerializer 完全相同,但生成较小的文件。

是否有任何简单的方法可以做到这一点,或者我是否必须对我的应用程序进行大量更改?或者,我应该使用任何其他类型的序列化程序吗?

将 XmlSerializer 替换为 BinarySerializer.我应该知道什么

切换到 BinaryFormatter 在这里是一个坏主意,IMO - 它从根本上改变了行为,尤其是您在版本之间和平台之间信任文件的能力。这也意味着您现在正在序列化字段,这可能不是序列化的数据(默认情况下为公共成员)的 1:1 映射。

如果你想要更小,也许只需通过DeflateStreamGZipStream运行它。如果这还不够,我的下一步将是切换到像protobuf-net这样的东西,因为它的行为与XmlSerializer非常相似(不完全相同),但作为二进制序列化器(不是字段序列化器)。但是,它尊重IXmlSerializable - 根据复杂性,这可能很容易回避。

我直言,使文件更小的最简单解决方案是采用当前的Office XML格式(ODF和MS格式)的方式:压缩它。这样,您就不必更改类中的任何内容。

如果仅针对空间执行此操作,则在序列化后压缩 XML 文件是否是一种替代方法?这样您就可以保持可读性,并且可以将文件命名为 project.xml.zip .