【问题标题】:What is the difference in intent between the serializers in FCL?FCL 中的序列化程序之间的意图有什么区别?
【发布时间】:2011-04-10 08:02:30
【问题描述】:

This question 很好地解释了序列化程序之间功能的差异。 BinaryFormatter 很快,XmlSerializer 可以互操作,等等。我知道。

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

特别是:

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

【问题讨论】:

    标签: .net serialization fcl


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多