重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“WCF服务元数据结构模式是怎样的”,在日常操作中,相信很多人在WCF服务元数据结构模式是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”WCF服务元数据结构模式是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10年积累的网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有子长免费网站建设让你可以放心的选择与我们合作。
WCF经过长时间的发展,很多用户都很了解WCF服务元数据了,这里我发表一下个人理解,和大家讨论讨论。所谓获取WCF服务元数据(Metadata),归根结点,实际上就是获取服务的终结点(Endpoint)的信息,这是服务公开在外的数据信息,包括Address、Binding与Contract,也就是所谓的ABCs。Juval L?wy在《Programming WCF Services》一书中,用生动形象的棒棒糖表示了终结点的构成:
WCF服务元数据可能包含多个终结点,每个终结点相当于是通信的入口,客户端和服务端通过终结点交换信息,如下图所示:
因而,如果能够获取终结点的详细信息,有助于我们更好地剖析服务的定义、内容与执行方式。服务有两种方案可以发布自己的元数据。一种是基于HTTP-GET协议提供元数据;另一种则为元数据交换方式,它往往使用一个专门的终结点,称之为元数据交换终结点。元数据交换终结点与其它终结点相似,仍然包含了地址、绑定与契约,但是使用的服务契约为WCF提供的接口 IMetadataExchange。实际上,这两种发布元数据的方式代表了它使用了两种不同的标准协议,前者为HTTP/GET请求,后者为WS-MetadataExchange(MEX)。在WCF,以MetadataExchangeClientMode枚举类型表示这两种元数据交换模式:
public enum MetadataExchangeClientMode { MetadataExchange, HttpGet }
WCF为终结点定义了一个专门的ServiceEndpoint类,被定义在 System.ServiceModel.Description命名空间中。ServiceEndpoint类包含了 EndpointAddress,Binding,ContractDescription三个类型的属性,分别对应Endpoint的 Address,Binding,Contract,如下图:
要获取服务的终结点,可以通过抽象类MetadataImporter获取,类的定义如下:
public abstract class MetadataImporter { public abstract Collection ImportAllContracts(); public abstract ServiceEndpointCollection ImportAllEndpoints(); //其它方法略; }
在类中,最重要的一个方法是ImportAllEndpoints(),它能够获取服务的所有终结点,并返回一个 ServiceEndpointCollection类型的对象。该类型为一个终结点集合,可以通过调用 ServiceEndpointCollection的Find()方法或FindAll()方法,找到符合条件的一个或多个终结点。它的定义如下:
public class ServiceEndpointCollection : Collection { public ServiceEndpoint Find(Type contractType); public ServiceEndpoint Find(Uri address); public Collection FindAll(Type contractType); //其它成员略 }
我们可以通过契约类型,或者服务契约的地址,查找符合条件的终结点。
到此,关于“WCF服务元数据结构模式是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!