我有XML /二进制序列化器的时候为什么要使用DataContract Serializer?

时间:2010-08-05 06:33:46

标签: wcf

任何人都可以详细说明为什么我应该使用Data Contract Serializer 虽然我们已经在.Net中使用XML /二进制序列化器了吗?

2 个答案:

答案 0 :(得分:1)

这是我在查看相同问题时发现的网站。 您应该检查this

从上述相同链接引用:

DataContractSerializer优于XMLSerializer的优势

  1. 选择加入而不是选择退出属性进行序列化。
  2. 因为它是选择性的,您不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公开成员,例如私人或受保护成员。你也不需要在属性上设置一个集合(但是没有setter你可以序列化,但不能反序列化)
  3. 比XmlSerializer快10%的速度来序列化数据因为你没有完全控制它的序列化方式,所以可以做很多工作来优化序列化/反序列化过程。
  4. 可以理解SerializableAttribute并知道它需要序列化
  5. 更多选项和对KnownTypes的控制
  6. 希望它有所帮助!

答案 1 :(得分:0)

还有一个巨大的优势; DataContract序列化允许实现相同DataContract的任何两个类之间的互操作。这是允许WCF在引用WCF服务时自动为您生成数据类的原因。您还可以通过在新的用户开发的类(或两个或三个)中引用已发布的DataContract来“破解”此过程;然后,您可以通过序列化在这些类的实例和您创建的任何其他新实例之间传输数据。这也是可能的,但是使用XML序列化会更加困难,而二进制序列化也是如此。