WCF 序列化 - 更多信息

发布于 2024-08-28 01:40:56 字数 140 浏览 7 评论 0原文

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

I read some microsoft articles.They explained that WCF uses DataContractSerializer for serialization.But the articles did not explain why DataContractSerializer preferred over
XmlSerialization.Can anyone give me the additional information?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

攒眉千度 2024-09-04 01:40:56

此处是一篇带有比较的文章。

关键部分:

XmlSerializer

优点:

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

缺点:

  1. 只能序列化属性

  2. 属性必须是公共的

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

  4. 支持较窄的类型集

  5. 无法理解 DataContractAttribute,除非也有 SerializedAttribute,否则不会序列化它

DataContractSerializer

优点:

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

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

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

  4. 能够理解SerializedAttribute并知道需要序列化

  5. ​​

    更多选项和对 KnownTypes 的控制

缺点:

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

Here is an article with a comparison.

Key section:

XmlSerializer

Advantages:

  1. Opt-out rather than opt-in properties to serialize. This mean you don’t have to specify each and every property to serialize, only those you don’t wan to serialize2. Full control over how a property is serialized including it it should be a node or an attribute
  2. Supports more of the XSD standard

Disadvantages:

  1. Can only serialize properties

  2. Properties must be public

  3. Properties must have a get and a set which can result in some awkward design

  4. Supports a narrower set of types

  5. Cannot understand the DataContractAttribute and will not serialize it unless there is a SerializableAttribute too

DataContractSerializer

Advantages:

  1. Opt-in rather than opt-out properties to serialize. This mean you specify what you want serialize

  2. Because it is opt in you can serialize not only properties, but also fields. You can even serialize non-public members such as private or protected members. And you dont need a set on a property either (however without a setter you can serialize, but not deserialize)

  3. Is about 10% faster than XmlSerializer to serialize the data because since you don’t have full control over how it is serialize, there is a lot that can be done to optimize the serialization/deserialization process.

  4. Can understand the SerializableAttribute and know that it needs to be serialized

  5. More options and control over KnownTypes

Disadvantages:

  1. No control over how the object is serialized outside of setting the name and the order
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文