【发布时间】:2010-12-27 01:46:03
【问题描述】:
我发现当涉及的数据类型没有[DataContract],而是[Serializable] 时,我的WCF 服务正常工作。
但所有 WCF 教程都显示第一个而不是后者。为什么?
【问题讨论】:
标签: .net wcf serialization attributes datacontract
我发现当涉及的数据类型没有[DataContract],而是[Serializable] 时,我的WCF 服务正常工作。
但所有 WCF 教程都显示第一个而不是后者。为什么?
【问题讨论】:
标签: .net wcf serialization attributes datacontract
DataContractAttribute 让您可以更好地控制通过网络发送的内容,因此您可以选择仅发送给定实体的必要字段。 Serializable 使用平台序列化,它假定 .NET 和相同(或相似)版本的类型在线路两端 - 它(通常)序列化所有私有成员、状态等。DCS 旨在用于轻量级 XML-ish您可以对其进行一些控制的表示形式,而 XmlSerializer 用于一种 XML 格式,您可以对其进行非常精细的控制(属性数据等)。
【讨论】:
用 [DataContract] 标记类是不够的,您还必须用 [DataMember] 装饰要序列化的字段。
数据协定是一种“选择加入”序列化模型,其中 XML 序列化器是“选择退出”。
【讨论】:
一个优点是 DataContract 序列化器比旧的 XmlSerializer 快得多。
编辑:示例将显示 [DataContract] 属性,因为它是为 WCF 使用的 DataContractSerializer 设计的。
【讨论】: