本文主要介绍“WCF服务的元数据结构模式是什么”。在日常操作中,我相信很多人对WCF服务的元数据结构模式有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“WCF服务的元数据结构模式是什么”的疑惑!接下来,请和边肖一起学习!
经过WCF长时间的发展,很多用户对WCF服务元数据已经很熟悉了。在这里,我想表达一下我个人的理解,和大家讨论一下。获取WCF服务元数据,说到底,其实就是获取服务端点的信息,也就是服务的数据信息,包括地址、绑定、契约,也就是ABCs。少管所?在《Programming WCF Services》一书中,wy用生动的棒棒糖表达了终点的构成:
WCF服务元数据可能包含多个端点,每个端点相当于通信的入口,客户端和服务器通过端点交换信息,如下图所示:
因此,如果我们能够获得端点的详细信息,将有助于我们更好地分析服务的定义、内容和执行模式。服务发布自己的元数据有两种方案。一是提供基于HTTP-GET协议的元数据;另一种是元数据交换,它通常使用一个特殊的端点,称为元数据交换端点。像其他端点一样,元数据交换端点仍然包含地址、绑定和协定,但是使用的服务协定是WCF提供的接口IMetadataExchange。实际上,这两种发布元数据的方式代表了它使用了两种不同的标准协议,前者是HTTP/GET请求,后者是WS-MetadataExchange(MEX)。在WCF,这两种元数据交换模式由MetadataExchangeClientMode枚举类型表示:
WCF为端点定义了一个特殊的服务端点类,它是在system . service model . description命名空间中定义的。ServiceEndpoint类包含EndpointAddress、Binding、ContractDescription三种类型的属性,分别对应端点的Address、Binding、Contract,如下图所示:
要获取服务的端点,您可以通过抽象类MetadataImporter获取它,其定义如下:
publicatabstractclassmetadataimporter { publicatabstractcollectionimportallcontracts();publicatabstractserviceendpointcollectionimportallendpoints();//其他方法省略;}在类中,最重要的方法是ImportAllEndpoints(),它可以获取服务的所有端点,并返回一个ServiceEndpointCollection类型的对象。该类型是端点的集合。通过调用ServiceEndpointCollection的Find()方法或FindAll()方法,可以找到一个或多个满足条件的终结点。其定义如下:
public classserviceendpointcollection : collection { public serviceendpointfind(TypeContractType);publicationendpointfind(uri address);public collectionIndall(TypeContractType);//其他成员省略}我们可以通过合同类型或服务合同地址找到符合条件的端点。
至此,“WCF服务的元数据结构模式是什么”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146000.html