新聞中心
我們知道,在WCF中,我們可以通過一種叫做WS-MEX方式的方式來進行WCF元數(shù)據(jù)的發(fā)布。那么今天我們就會為大家詳細介紹一下另外一種叫做HTTP-GET的方式來幫助我們實現(xiàn)WCF元數(shù)據(jù)的發(fā)布。#t#

目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護、企業(yè)網(wǎng)站設(shè)計、豐林網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
現(xiàn)在我們來是實現(xiàn)基于HTTP-GET的元數(shù)據(jù)獲取方式。既然服務(wù)端采用了基于HTTP-GET的元數(shù)據(jù)發(fā)布方式,那么就意味著我們可以通過簡單的HTTP請求的方式獲取相應(yīng)的元數(shù)據(jù)資源。
同樣是基于上面的例子,仔細的讀者相信已經(jīng)看到了,在計算服務(wù)的配置文件中,除了為服務(wù)添加MEX終結(jié)點之外,還通過ServiceMetadataBehavior開啟了基于HTTP-GET的元數(shù)據(jù)發(fā)布方式,并將元數(shù)據(jù)發(fā)布地址指定為:http://127.0.0.1:3721/calculatorservice/metadata。
下面的代碼實現(xiàn)了相應(yīng)的WCF元數(shù)據(jù)獲取,其中我通過指定目標地址創(chuàng)建了一個HttpWebRequest對象,并通過該對象向元數(shù)據(jù)的發(fā)布地址發(fā)送請求。獲取的元數(shù)據(jù)將以HttpWebResponse的形式返回,由于獲取的元數(shù)據(jù)實際上是一個WSDL文檔,所以我們可以通過ServiceDescription的Read方法直接讀取生成一個ServiceDescription對象,并最終通過MetadataSection的靜態(tài)方法CreateFromServiceDescription將其轉(zhuǎn)換成一個MetadataSection對象。該MetadataSection對象被最終添加到創(chuàng)建的MetadataSet中,并被寫入一個XML文件。
- using System.Diagnostics;
- using System.Net;
- using System.ServiceModel.Description;
- using System.Xml;
- using System.Text;
- namespace Artech.MetataRetrieval
- {
- class Program
- {
- static void Main(string[] args)
- {
- MetadataSet metadata = new MetadataSet();
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create
("http://127.0.0.1:3721/calculatorservice/metadata");
request.Method = "Get";- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- using (XmlReader reader = XmlDictionaryReader.CreateTextReader
(response.GetResponseStream(), new XmlDictionaryReaderQuotas()))- {
- System.Web.Services.Description.ServiceDescription serviceDesc =
System.Web.Services.Description.ServiceDescription.Read(reader);- metadata.MetadataSections.Add(MetadataSection.
CreateFromServiceDescription(serviceDesc));- }
- using (XmlWriter writer = new XmlTextWriter
("metadata.xml", Encoding.UTF8))- {
- metadata.WriteTo(writer);
- }
- Process.Start("metadata.xml");
- }
- }
- }
當上面的應(yīng)用程序成功執(zhí)行,包含獲取的WCF元數(shù)據(jù)的XML將會通過IE打開。通過兩種方式獲取的元數(shù)據(jù)本質(zhì)上是相同的,不過可能細心的讀者已經(jīng)發(fā)現(xiàn)了:與上面的例子(WS-MEX)獲取的MetadataSet不同,通過HTTP-GET獲取的MetadataSet僅僅包含一個元數(shù)據(jù)方言(Dialect)為WSDL的MetadataSection。這是因為,前面的例子實際上將WSDL中引用(通過終結(jié)點地址或者資源地址)的內(nèi)容都生成了相應(yīng)的MetadataSection,在這里由于篇幅所限,并沒有做這些工作。
網(wǎng)站欄目:WCF元數(shù)據(jù)獲取方式技巧分享
文章位置:http://fisionsoft.com.cn/article/cohhcie.html


咨詢
建站咨詢
