0

我读了一些微软文章。他们解释了 WCFDataContractSerializer用于序列化。但是这些文章没有解释为什么 DataContractSerializer 比 XmlSerialization 更受欢迎。谁能给我额外的信息?

4

1 回答 1

4

是一篇有比较的文章。

关键部分:

XmlSerializer

优点:

  1. 选择退出而不是选择加入属性进行序列化。这意味着您不必指定要序列化的每个属性,只需指定那些您不想序列化的属性2。完全控制属性如何序列化,包括它应该是节点或属性
  2. 支持更多的 XSD 标准

缺点:

  1. 只能序列化属性

  2. 属性必须是公开的

  3. 属性必须有一个 get 和一个 set,这可能会导致一些尴尬的设计

  4. 支持更窄的类型集

  5. 无法理解 DataContractAttribute 并且不会序列化它,除非也有 SerializableAttribute

DataContractSerializer

优点:

  1. 选择加入而不是选择退出属性进行序列化。这意味着您指定要序列化的内容

  2. 因为它是可选的,所以您不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公共成员,例如私有或受保护成员。而且您也不需要对属性进行设置(但是,如果没有设置器,您可以序列化,但不能反序列化)

  3. 序列化数据比 XmlSerializer 快 10% 左右,因为由于您无法完全控制数据的序列化方式,因此可以做很多事情来优化序列化/反序列化过程。

  4. 能看懂SerializableAttribute,知道需要序列化

  5. 更多选项和对 KnownTypes 的控制

缺点:

  1. 除了设置名称和顺序之外,无法控制对象的序列化方式
于 2010-04-05T06:16:58.083 回答