WCF服务编程之数据契约和序列化

需积分: 9 3 下载量 160 浏览量 更新于2024-07-30 收藏 226KB PDF 举报
WCF服务编程03数据契约和序列化 WCF服务编程03中,数据契约和序列化是两个关键概念。在本章中,我们将详细介绍数据契约的支持类型编组和转换方法,以及如何通过基础架构处理类的层级与数据契约的版本控制。 数据契约是服务支持的契约职责的一部分,它发布于服务元数据中,服务元数据允许客户端将与平台、技术无关的数据类型表示形式转换为客户端本地的表示形式。数据契约支持类型编组和转换,使得WCF服务能够托管CLR类型,并将它们公开为服务。 然而,CLR类型属于.NET特定的技术,这就带来了一个问题,因为面向服务的一个核心原则就是在跨越服务边界时,服务不能够暴露它们的实现技术。因此,WCF不允许在跨越服务边界时公开CLR数据类型。我们需要找到一种办法,实现CLR数据类型与标准的平台无关的表示形式之间的转换。 数据契约的主要功能是将CLR数据类型转换为XML信息集,也可以称之为信息集(Infoset)。序列化是实现数据契约的一种方法,它将CLR对象或值类型转换为XML信息集,以便在服务边界之间传递。 在WCF服务中,序列化是将CLR对象或值类型转换为XML信息集的过程。在客户端,WCF会对传入参数执行序列化操作,将CLR本地表示形式转换为XML信息集,并将其传递给服务端。在服务端,WCF会对传入参数执行反序列化操作,将XML信息集转换回CLR对象或值类型。 序列化的实现非常简单,如图3-1所示。WCF提供了多种序列化技术,例如DataContractSerializer和XmlSerializer等。DataContractSerializer是WCF的默认序列化器,它可以序列化和反序列化CLR对象和值类型。 在WCF服务中,数据契约和序列化是两个紧密相关的概念。数据契约定义了服务支持的数据类型,而序列化实现了数据契约的转换。通过数据契约和序列化,WCF服务能够将CLR对象或值类型转换为XML信息集,以便在服务边界之间传递。 此外,WCF服务还需要一种正式的规格说明来声明两者之间的转换。这个方法就是本章所要介绍的主题—数据契约。本章的第一部分介绍了数据契约支持类型编组和转换的方法,以及如何通过基础架构处理类的层级与数据契约的版本控制。第二部分则介绍了如何将不同的.NET类型,例如枚举、委托、数据表以及集合,作为数据契约使用。 数据契约和序列化是WCF服务编程的核心概念,它们使得WCF服务能够将CLR对象或值类型转换为XML信息集,以便在服务边界之间传递。