【问题标题】:When/Why should I not use IsReference=true on my DataContracts?何时/为什么不应该在我的 DataContracts 上使用 IsReference=true?
【发布时间】:2012-02-11 04:50:07
【问题描述】:

我了解什么是属性属性 IsReference 以及它在做什么。但我不明白为什么/何时应该使用它。什么时候使用 IsReference=true 是个坏主意?

如果我的 wcf 服务是 .net 到 .net,是否有充分的理由设置 IsReference=true?

【问题讨论】:

    标签: wcf datacontract datacontractserializer


    【解决方案1】:

    避免使用 IsReference 至少有两个原因:

    首先存在性能损失,因为所有序列化程序都必须对每个要序列化的对象执行身份检查。

    其次,DataContractJsonSerializer 无法序列化标有 IsReference 属性的对象。因此,如果您需要同时支持 Xml 和 Json,那么您将无法使用它。

    除此之外,我看不出有任何理由不使用它。毕竟它确实节省了一些宝贵的带宽!

    【讨论】:

    【解决方案2】:

    我认为不应该发生任何不好的事情。如果您的图形包含多个指向同一对象实例的链接,则将此属性设置为 true 将减小 XML 大小。

    http://zamd.net/2008/05/20/datacontract-serializer-and-isreference-property/

    但我不确定为什么默认情况下不启用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 2017-03-22
      • 2010-10-10
      • 2014-01-19
      相关资源
      最近更新 更多