您好,登錄后才能下訂單哦!
這篇文章主要介紹“WCF服務元數(shù)據(jù)結構模式是怎樣的”,在日常操作中,相信很多人在WCF服務元數(shù)據(jù)結構模式是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”WCF服務元數(shù)據(jù)結構模式是怎樣的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
WCF經過長時間的發(fā)展,很多用戶都很了解WCF服務元數(shù)據(jù)了,這里我發(fā)表一下個人理解,和大家討論討論。所謂獲取WCF服務元數(shù)據(jù)(Metadata),歸根結點,實際上就是獲取服務的終結點(Endpoint)的信息,這是服務公開在外的數(shù)據(jù)信息,包括Address、Binding與Contract,也就是所謂的ABCs。Juval L?wy在《Programming WCF Services》一書中,用生動形象的棒棒糖表示了終結點的構成:
WCF服務元數(shù)據(jù)可能包含多個終結點,每個終結點相當于是通信的入口,客戶端和服務端通過終結點交換信息,如下圖所示:
因而,如果能夠獲取終結點的詳細信息,有助于我們更好地剖析服務的定義、內容與執(zhí)行方式。服務有兩種方案可以發(fā)布自己的元數(shù)據(jù)。一種是基于HTTP-GET協(xié)議提供元數(shù)據(jù);另一種則為元數(shù)據(jù)交換方式,它往往使用一個專門的終結點,稱之為元數(shù)據(jù)交換終結點。元數(shù)據(jù)交換終結點與其它終結點相似,仍然包含了地址、綁定與契約,但是使用的服務契約為WCF提供的接口 IMetadataExchange。實際上,這兩種發(fā)布元數(shù)據(jù)的方式代表了它使用了兩種不同的標準協(xié)議,前者為HTTP/GET請求,后者為WS-MetadataExchange(MEX)。在WCF,以MetadataExchangeClientMode枚舉類型表示這兩種元數(shù)據(jù)交換模式:
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服務元數(shù)據(jù)結構模式是怎樣的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。