NetDataContractSerializer与DataContractSerializer

Noi*_*ich 8 datacontractserializer netdatacontractserializer

我们有一个应用程序,包含我们希望在数据库中序列化的对象.
目前我们正在使用NetDataContractSerializer,但最近发现,由于涉及的.Net类型信息,它创建了大量文件,这意味着应用程序缓慢,即使对于基本对象.
我们正在考虑DataContractSerializer改用,我一直在寻找两者的比较,但没找到.

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

谢谢.

car*_*ira 11

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