DataContractSerializer与XmlSerializer:每个序列化程序的优点和缺点

时间:2010-03-24 06:31:29

标签: .net serialization

我的桌面应用程序使用XmlSerializer序列化对象。我被建议改为使用DataContractSerializer 我应该在哪种情况下使用DataContractSerializer

非常感谢

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

1 个答案:

答案 0 :(得分:107)

丹·里格斯比(Dan Rigsby)就此发表了最后的帖子 - 去看看吧!

XmlSerializer vs. DataContractSerializer (web archive)

他说所有的话都说得非常有说服力。

简而言之:

XmlSerializer:

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

DataContractSerializer是:

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