老老实实学WCF
第六篇 元数据交换
通过前两篇的学习,我们了解了WCF通信的一些基本原理,我们知道,WCF服务端和客户端通过共享元数据(包括服务协定、服务器终结点信息)在两个终结点上建立通道从而进行通信。我们通过手写代码(或配置)的方式为服务端编写了元数据信息,没有借助元数据交换就实现了通信。然而在实际应用中,元数据往往是很多的,而且重复编写元数据的工作也是不值得的,因此必然会用到元数据交换的方式让客户端获取元数据,本篇我们就来进一步了解一下元数据和元数据交换。
1. 元数据是怎样提供的
我们知道,元数据包括了要和服务端进行通信的所有信息,包括服务协定接口、服务端终结点地址、绑定等信息,它指出了客户端应该到何处去寻找服务以及怎样调用服务的一切线索。但是服务端是怎样公布其元数据的呢?
答案是使用WSDL文件,WSDL即Web Service Description Language,Web服务描述语言,它是一个XML文件,在这个文件中按照一定的标准来对Web Service进行描述,他是符合W3C标准的,因为WCF是被设计为供不同平台调用的服务框架,所以客户端可能是非微软平台的,比如Java什么的。因此WCF必须使用WSDL这种国际标准的描述方法来描述服务才能被众多的平台所访问。
2. 元数据交换的过程是怎样的
在WCF服务端的运行时,有一组类库随时待命把服务的元数据输出为WSDL描述提供给请求者,只要有客户端按照服务端约定的方法来请求元数据,服务端立即将服务运行时状态写成WSDL文件提供。客户端得到的实际上就是WSDL文件(还有一些框架描述文件XSD),客户端拿到文件后再使用自己的方法来解读WSDL,把他翻译成客户端可用的源代码或配置文件,这时客户端就得到了服务的编程模型,通过一些代理类,客户端甚至可以像调用本地对象一样使用WCF服务。
因此整个过程是这样:客户端向服务端请求元数据交换-->服务端运行时将元数据编写成WSDL文件提供-->客户端获得文件-->客户端翻译文件-->客户端根据翻译结果生成本地类代码和配置-->客户端获得服务的本地编程模型。
这就是元数据交换的过程。
3. 获得WSDL
在微软平台中,有两种方法来进行元数据交换,第一是使用服务引用,第二是使用元数据实用工具(svcutil.exe)来进行,我们先学习这个工具。
这个工具可以在Windows SDK中找到,具体位置为 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin,如果你有VS2010,可以启动VS2010的命令行工具,这样就可以在任何目录下使用这个程序。
我们先看一个例子,就是我们在前几篇中建立的IIS服务HelloWCFService,它被我寄宿在IIS中。
源代码如下(HelloWCF.cs):
using System; using System.ServiceModel; namespace LearnWCF { [ServiceContract] public interf

本文介绍了WCF服务中的元数据交换,详细讲解了元数据的提供方式、交换过程,以及如何通过svcutil.exe工具获取和翻译WSDL文件。通过服务引用和元数据交换终结点,阐述了HTTP GET和MEX两种元数据公开方式及其区别。
最低0.47元/天 解锁文章
1万+





