【发布时间】:2012-02-11 04:50:07
【问题描述】:
我了解什么是属性属性 IsReference 以及它在做什么。但我不明白为什么/何时应该不使用它。什么时候使用 IsReference=true 是个坏主意?
如果我的 wcf 服务是 .net 到 .net,是否有充分的理由不设置 IsReference=true?
【问题讨论】:
标签: wcf datacontract datacontractserializer
我了解什么是属性属性 IsReference 以及它在做什么。但我不明白为什么/何时应该不使用它。什么时候使用 IsReference=true 是个坏主意?
如果我的 wcf 服务是 .net 到 .net,是否有充分的理由不设置 IsReference=true?
【问题讨论】:
标签: wcf datacontract datacontractserializer
避免使用 IsReference 至少有两个原因:
首先存在性能损失,因为所有序列化程序都必须对每个要序列化的对象执行身份检查。
其次,DataContractJsonSerializer 无法序列化标有 IsReference 属性的对象。因此,如果您需要同时支持 Xml 和 Json,那么您将无法使用它。
除此之外,我看不出有任何理由不使用它。毕竟它确实节省了一些宝贵的带宽!
【讨论】:
我认为不应该发生任何不好的事情。如果您的图形包含多个指向同一对象实例的链接,则将此属性设置为 true 将减小 XML 大小。
http://zamd.net/2008/05/20/datacontract-serializer-and-isreference-property/
但我不确定为什么默认情况下不启用它。
【讨论】: