Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF序列化-详细信息_Wcf_Datacontractserializer - Fatal编程技术网

WCF序列化-详细信息

WCF序列化-详细信息,wcf,datacontractserializer,Wcf,Datacontractserializer,我读了一些微软的文章。他们解释说WCF使用DataContractSerializer进行序列化。但是这些文章没有解释为什么DataContractSerializer优先于DataContractSerializer XmlSerialization。有人能给我更多的信息吗?是一篇比较文章 关键部分: XmlSerializer 优点: 选择退出而不是选择加入要序列化的属性。这意味着您不必指定每个要序列化的属性,只需指定那些您不想序列化的属性2。完全控制属性的序列化方式,包括它应该是节点或属性

我读了一些微软的文章。他们解释说WCF使用
DataContractSerializer
进行序列化。但是这些文章没有解释为什么DataContractSerializer优先于DataContractSerializer XmlSerialization。有人能给我更多的信息吗?

是一篇比较文章

关键部分:

XmlSerializer 优点:

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

  • 只能序列化属性

  • 属性必须是公共的

  • 属性必须有一个get和一个set,这可能会导致一些笨拙的设计

  • 支持更窄的类型集

  • 无法理解DataContractAttribute,除非存在SerializableAttribute,否则不会序列化它

  • 数据序列化程序 优点:

  • 选择加入而不是选择退出要序列化的属性。这意味着您可以指定要序列化的内容

  • 因为它是opt-in,所以您不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公共成员,例如私有或受保护的成员。您也不需要属性上的集合(但是,如果没有setter,您可以序列化,但不能反序列化)

  • 序列化数据的速度比XmlSerializer快约10%,因为您无法完全控制数据的序列化方式,因此可以做很多事情来优化序列化/反序列化过程

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

  • 更多选项和对KnownTypes的控制

  • 缺点:

  • 除了设置名称和顺序外,无法控制对象的序列化方式
  • 这是一篇有比较的文章

    关键部分:

    XmlSerializer 优点:

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

  • 只能序列化属性

  • 属性必须是公共的

  • 属性必须有一个get和一个set,这可能会导致一些笨拙的设计

  • 支持更窄的类型集

  • 无法理解DataContractAttribute,除非存在SerializableAttribute,否则不会序列化它

  • 数据序列化程序 优点:

  • 选择加入而不是选择退出要序列化的属性。这意味着您可以指定要序列化的内容

  • 因为它是opt-in,所以您不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公共成员,例如私有或受保护的成员。您也不需要属性上的集合(但是,如果没有setter,您可以序列化,但不能反序列化)

  • 序列化数据的速度比XmlSerializer快约10%,因为您无法完全控制数据的序列化方式,因此可以做很多事情来优化序列化/反序列化过程

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

  • 更多选项和对KnownTypes的控制

  • 缺点:

  • 除了设置名称和顺序外,无法控制对象的序列化方式

  • 这是MSDN杂志上的另一篇非常好的文章。这是MSDN杂志上的另一篇非常好的文章。