NetDataContractSerializer与DataContractSerializer

时间:2011-10-25 14:16:23

标签: datacontractserializer netdatacontractserializer

我们有一个带有对象的应用程序,我们希望在数据库中将其序列化 目前我们正在使用NetDataContractSerializer,但最近发现由于涉及.Net类型信息,它会创建大量文件,这意味着应用程序速度慢,即使对于基本对象也是如此。 我们正在考虑转而使用DataContractSerializer,我一直在寻找两者的比较,但没找到。

  • 两者创建的对象之间的大小差异是什么?
  • 是否有很大的性能差异?
  • 当我有一个包含List<X>的对象时,其中任何一个都有问题,其中X由多个其他对象继承,以便列表在运行时包含许多不同的类型? (我被告知DataContractSerializer可以被赋予KnownTypes个属性,但这意味着代码中存在更多依赖关系。有没有办法让DataContractSerializer知道我的解决方案中的所有类型?)< / LI>

感谢。

1 个答案:

答案 0 :(得分:10)

  1. NetDataContractSerializer(NetDCS)写入所有对象的类型信息,而DataContractSerializer(DCS)只写那些需要的(即,如果您将成员声明为类型B,并且序列化时成员的实际值是类型D,其中D是来自B的派生类型,因此DCS序列化类型中的“噪音”要少得多。
  2. 不是真的,但你应该尝试两种情况,看它是否会影响你
  3. 您需要在DCS中使用已知类型,但如果您不想使用已知类型,则可以使用DataContractResolver。可以在Youssef Massaoui's blog中找到此类解析程序的示例,有关解析程序本身的更多信息可以在http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/21/wcf-extensibility-data-contract-resolver.aspx上的WCF可扩展性帖子中找到。