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