1

这个问题很好地解释了序列化程序之间的功能差异。BinaryFormatter速度快,XmlSerializer可互操作等。我知道。

但是意图有什么区别?每个类的设计用途是什么?

尤其是:

  • 为什么他们决定XmlSerializer对私人数据视而不见,当BinaryFormatter看到它足够快时(通过所谓的慢反射)
  • 为什么他们要制作 3 个单独的 XML 序列化程序-XmlSerializer和?SoapFormatterDataContractSerializer
  • 为什么有些选择加入有些选择退出?
  • 为什么他们让界面如此不一致?例如 XmlSerializer 不提供OnDeserializedCallback等效项。另一个示例 - XmlSerializerIsNullable [XmlIgnore]用于 BinarySerializer 使用的内容[OptionalField][NonSerialized].
4

1 回答 1

0

XML 序列化用于创建特定的 XML 结构,并允许您更改对象的序列化方式 - XMl 的外观(如果您使用属性或节点等)。

二进制序列化“看到”私有成员,因为它只是获取对象的内存结构并将其写入磁盘。非常快,但不可互操作,尤其是在对象结构略有不同的情况下(例如您的应用程序的新版本试图反序列化较旧的二进制文件)。

SoapFormatter 和 DataContractSerializer 用于 .NET 组件之间的通信,通常是分层应用程序 - DataContractSerializer 用于 WCF,而 SoapFormatter 用于较旧的 SOAP 实用程序。

于 2010-09-09T15:46:46.620 回答