【问题标题】:Gratuitous use of System.Runtime.Serialization attributes?无故使用 System.Runtime.Serialization 属性?
【发布时间】:2010-03-23 23:26:00
【问题描述】:
用System.Runtime.Serialization 属性(如[DataContract])装饰一个类是否有任何成本/缺点(除了输入太多),以便它可以在本地用作对桌面客户端项目的直接引用或 作为 WCF 服务的类型?这里的目标是编写一个可在富客户端 (WPF) 和 Web 场景中使用的数据层类。我的数据类将位于与客户端和 WCF(*.svc代码隐藏)代码分开的项目中。这是重用代码的有效尝试吗?
【问题讨论】:
标签:
wpf
wcf
silverlight
serialization
【解决方案1】:
装饰类、属性或方法不会产生任何成本 - 除了编写属性所花费的时间。该属性将被编译为类型的元数据,然后被另一个组件用于实现附加功能。
【解决方案2】:
我能看到的唯一缺点是在程序集中包含属性的成本。除非使用它们,否则它们对性能的影响很小。
我不会说,但它确实使 .DLL 更大,并且确实将 RTTI 在程序集中分散了一点,尤其是如果您将类推送到读取块边界上,可能会减慢程序集负载(导致一些额外的要读取的块,否则不会)。然而,这些差异通常只在冷启动测试中才明显。