gpt4 book ai didi

datacontractserializer - NetDataContractSerializer和DataContractSerializer

转载 作者:行者123 更新时间:2023-12-04 00:17:44 26 4
gpt4 key购买 nike

我们有一个带有对象的应用程序,我们希望该对象在数据库中保持序列化。
当前,我们正在使用NetDataContractSerializer,但是最近发现,由于涉及到.Net类型信息,它创建了巨大的文件,这意味着即使是基本对象的应用程序也很慢。
我们正在考虑改为使用DataContractSerializer,并且我一直在寻找两者的良好对比,但没有找到一个。

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

  • 谢谢。

    最佳答案

  • NetDataContractSerializer(NetDCS)写入所有对象的类型信息,而DataContractSerializer(DCS)仅写入需要的对象(即,如果您将成员声明为B类型,则该成员在序列化时的实际值是type D,其中D是从B派生的类型,因此DCS序列化类型中的“噪声”要少得多。
  • 并非如此,但您应该同时尝试两种情况,以查看它是否会影响到
  • 您需要在DCS中使用已知类型,但是如果您不想使用已知类型,则可以使用DataContractResolver。可以在Youssef Massaoui's blog中找到此类解析器的示例,有关该解析器本身的更多信息,请参见我在http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/21/wcf-extensibility-data-contract-resolver.aspx上有关WCF可扩展性的文章。
  • 关于datacontractserializer - NetDataContractSerializer和DataContractSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7890693/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com