轉帖|其它|編輯:郝浩|2010-07-12 11:24:01.000|閱讀 851 次
概述:WCF經過長時間的發展,使用它的人越來越多,它的功能也隨之的強大,本文主要以自己的經驗來處理編程中WCF元數據問題,希望對大家有所幫助。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
WCF經過長時間的發展,使用它的人越來越多,它的功能也隨之的強大,就我的經驗來處理編程中WCF元數據。應用程序需要獲取服務終結點的元數據,查看是否存在至少一個終結點支持請求的契約。如如果元數據交換終結點是服務支持的,或者基于HTTP-GET協議,那么元數據在這個終結點中就是可用的。當我們使用HTTP-GET協議時,元數據交換的地址就是HTTP-GET 地址(通常,服務的基地址以?wsdl為后綴)。
支持WCF元數據處理的類型
public enum MetadataExchangeClientMode
{
MetadataExchange, HttpGet
}
class MetadataSet : ...
{...}
public class ServiceEndpointCollection : Collection<ServiceEndpoint> {...}
public class MetadataExchangeClient
{
public MetadataExchangeClient();
public MetadataExchangeClient(Binding mexBinding);
public MetadataSet GetMetadata(Uri address,MetadataExchangeClientMode mode);
//更多成員
}
public abstract class MetadataImporter
{
public abstract ServiceEndpointCollection ImportAllEndpoints();
//更多成員}
public class WsdlImporter : MetadataImporter
{
public WsdlImporter(MetadataSet metadata); //更多成員
}
public class ServiceEndpoint
{
public EndpointAddress Address
{get;set;}
public Binding Binding
{get;set;}
public ContractDescription Contract
{get;}
//更多成員
}
public class ContractDescription
{
public string Name {get;set;}
public string Namespace {get;set;} //更多成員
}
MetadataExchangeClient能夠使用與WCF元數據交換關聯的綁定,該元數據交換保存在應用程序的配置文件中。我們也可以將初始化后的綁定實例傳遞給MetadataExchange-Client的構造函數。傳遞的綁定實例包含一些自定義值,例如容量。如果返回的元數據超過默認的接收消息大小時,為了接收更大的消息,就可以設置容量值。
MetadataExchangeClient的GetMetadata()方法接收一個終結點地址實例,它封裝了元數據交換地址以及一個枚舉值,指定了訪問的方式。方法返回的元數據放在一個MetadataSet實例中。我們不需要直接操作 MetadataSet類型,而是創建MetadataImporter類的子類實例,例如WsdlImporter,將原來的元數據傳遞給它的構造函數,然后調用ImportAllEndpoints()方法,獲取在元數據中查找到的所有終結點的集合。終結點以ServiceEndpoint類型方式表示。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載