新聞中心
WCF經(jīng)過長時間的發(fā)展,很多用戶都很了解WCF服務(wù)元數(shù)據(jù)了,這里我發(fā)表一下個人理解,和大家討論討論。所謂獲取WCF服務(wù)元數(shù)據(jù)(Metadata),歸根結(jié)點,實際上就是獲取服務(wù)的終結(jié)點(Endpoint)的信息,這是服務(wù)公開在外的數(shù)據(jù)信息,包括Address、Binding與Contract,也就是所謂的ABCs。Juval L?wy在《Programming WCF Services》一書中,用生動形象的棒棒糖表示了終結(jié)點的構(gòu)成:

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、正藍(lán)ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的正藍(lán)網(wǎng)站制作公司
WCF服務(wù)元數(shù)據(jù)可能包含多個終結(jié)點,每個終結(jié)點相當(dāng)于是通信的入口,客戶端和服務(wù)端通過終結(jié)點交換信息,如下圖所示:
#T#因而,如果能夠獲取終結(jié)點的詳細(xì)信息,有助于我們更好地剖析服務(wù)的定義、內(nèi)容與執(zhí)行方式。服務(wù)有兩種方案可以發(fā)布自己的元數(shù)據(jù)。一種是基于HTTP-GET協(xié)議提供元數(shù)據(jù);另一種則為元數(shù)據(jù)交換方式,它往往使用一個專門的終結(jié)點,稱之為元數(shù)據(jù)交換終結(jié)點。元數(shù)據(jù)交換終結(jié)點與其它終結(jié)點相似,仍然包含了地址、綁定與契約,但是使用的服務(wù)契約為WCF提供的接口 IMetadataExchange。實際上,這兩種發(fā)布元數(shù)據(jù)的方式代表了它使用了兩種不同的標(biāo)準(zhǔn)協(xié)議,前者為HTTP/GET請求,后者為WS-MetadataExchange(MEX)。在WCF,以MetadataExchangeClientMode枚舉類型表示這兩種元數(shù)據(jù)交換模式:
- public enum MetadataExchangeClientMode
- {
- MetadataExchange,
- HttpGet
- }
WCF為終結(jié)點定義了一個專門的ServiceEndpoint類,被定義在 System.ServiceModel.Description命名空間中。ServiceEndpoint類包含了 EndpointAddress,Binding,ContractDescription三個類型的屬性,分別對應(yīng)Endpoint的 Address,Binding,Contract,如下圖:
要獲取服務(wù)的終結(jié)點,可以通過抽象類MetadataImporter獲取,類的定義如下:
- public abstract class MetadataImporter
- {
- public abstract Collection ImportAllContracts();
- public abstract ServiceEndpointCollection ImportAllEndpoints();
- //其它方法略;
- }
在類中,最重要的一個方法是ImportAllEndpoints(),它能夠獲取服務(wù)的所有終結(jié)點,并返回一個 ServiceEndpointCollection類型的對象。該類型為一個終結(jié)點集合,可以通過調(diào)用 ServiceEndpointCollection的Find()方法或FindAll()方法,找到符合條件的一個或多個終結(jié)點。它的定義如下:
- public class ServiceEndpointCollection : Collection
- {
- public ServiceEndpoint Find(Type contractType);
- public ServiceEndpoint Find(Uri address);
- public Collection FindAll(Type contractType);
- //其它成員略
- }
我們可以通過契約類型,或者服務(wù)契約的地址,查找符合條件的終結(jié)點。
當(dāng)前標(biāo)題:圖文演示W(wǎng)CF服務(wù)元數(shù)據(jù)結(jié)構(gòu)模式
文章地址:http://m.fisionsoft.com.cn/article/djiscjs.html


咨詢
建站咨詢
