WCF序列化 - 更多信息

时间:2010-04-05 06:11:39

标签: wcf datacontractserializer

我读了一些微软文章。他们解释说WCF使用DataContractSerializer进行序列化。但文章没有解释为什么DataContractSerializer更喜欢 XmlSerialization。任何人都可以给我额外的信息吗?

2 个答案:

答案 0 :(得分:4)

Here是一篇比较文章。

关键部分:

XmlSerializer的

优点:

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

    1. 只能序列化属性

    2. 属性必须是公开的

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

    4. 支持更窄的一组类型

    5. 无法理解DataContractAttribute并且不会序列化它,除非还有Seri​​alizableAttribute

    6. 的DataContractSerializer

      优点:

      1. 选择加入而不是选择退出属性进行序列化。这意味着您指定了要序列化的内容
      2. 因为它是选择性的,所以不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公开成员,例如私人或受保护成员。你也不需要在属性上设置一个集合(但是没有setter你可以序列化,但不能反序列化)

      3. 比XmlSerializer快10%的序列化数据要快,因为由于你没有完全控制序列化的方式,所以可以做很多工作来优化序列化/反序列化过程。

      4. 可以理解SerializableAttribute并知道它需要序列化

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

      6. 缺点:

        1. 在设置名称和顺序
        2. 之外无法控制对象的序列化方式

答案 1 :(得分:2)

这是MSDN杂志上另一篇非常好的文章,WCF Serialization