首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetDataContractSerializer对DataContractSerializer

NetDataContractSerializer对DataContractSerializer
EN

Stack Overflow用户
提问于 2011-10-25 14:16:22
回答 1查看 6.6K关注 0票数 10

我们有一个要在数据库中序列化的对象的应用程序。

目前我们正在使用NetDataContractSerializer,但是最近发现,由于涉及.Net类型的信息,它会创建巨大的文件,这意味着应用程序的速度很慢,甚至对于基本对象也是如此。

我们正在考虑改用DataContractSerializer,我一直在寻找两者的比较,但没有找到一个。

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-27 21:19:40

  1. NetDataContractSerializer (NetDCS)为所有对象写入类型信息,而DataContractSerializer (DCS)只写入那些需要的信息(例如,如果您将成员声明为B类型,并且在序列化时成员的实际值为D类型,其中D是从B派生的类型,因此DCS序列化类型中的“噪音”要小得多。
  2. 不完全是这样,但是你应该在你的场景中都试一试,看看它是否会影响你。
  3. 您需要在DCS中使用已知类型,但如果不想使用已知类型,则可以使用DataContractResolver。在优素福·马索维的博客中可以找到这样一个解析器的示例,有关解析器本身的更多信息可以在我在http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/21/wcf-extensibility-data-contract-resolver.aspx上的WCF扩展性文章中找到。
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7890693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档