.net - DataContractSerializer 与 XmlSerializer : Pros and Cons of each serializer

标签 .net serialization

我的桌面应用程序使用 XmlSerializer 序列化对象。建议我改用 DataContractSerializer
在哪些场景下应该使用 DataContractSerializer

非常感谢

评论。
1. 输出的XML文件存储在本地。没有其他应用程序从该 XML 文件反序列化对象。
2. 我的应用程序使用 .NET Framework 3.5 SP1 运行。

最佳答案

Dan Rigsby 有关于此问题的终极帖子 - 请阅读它!

XmlSerializer vs. DataContractSerializer (web archive)

他以一种非常令人信服的方式说出了所有要说的。

简而言之:

XmlSerializer:

  • 已经存在很长时间了
  • 是“选择退出”;所有公共(public)内容都会被序列化,除非你告诉它不要这样做([XmlIgnore])

DataContractSerializer 是:

  • 镇上的新来的 child
  • 针对速度进行了优化(通常比 XmlSerializer 快 10% 左右)
  • “选择加入” - 只有您专门标记为 [DataMember] 的内容才会被序列化
  • 但任何用 [DataMember] 标记的内容都将被序列化 - 无论是 public 还是 private
  • 不支持 XML 属性(出于速度原因)

关于.net - DataContractSerializer 与 XmlSerializer : Pros and Cons of each serializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505778/

相关文章:

java - HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST - SOAP

.NET:如何在窗口最大化时获取 ActiveCaptionText 颜色?

java - 如何将 Externalizable 覆盖为 Serializable?

serialization - 如何在Django的序列化程序中更改字段名称

.net - 用 "A"为抽象类加前缀,类似接口(interface)的前缀为 "I"?

.net - 从 NHibernate 映射生成数据库模式

c# - 在c#中如果值等于0.7向上如何四舍五入?

php - Symfony/serializer 在对象中标准化对象

带有某些 NOT 值选择器的 jQuery 类

serialization - 序列化 PHP SOAPClient 对象