日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF通道具體應(yīng)用技巧分享

WCF中的通道應(yīng)用在實(shí)際編程中是一個(gè)非常重要的操作步驟。我們今天將會(huì)通過對(duì)WCF通道的使用技巧進(jìn)行一個(gè)詳細(xì)的分析,希望可以讓大家從中獲得一些幫助,已解決在實(shí)際編程中出現(xiàn)的一些問題。

我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、渭南ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的渭南網(wǎng)站制作公司

我們可以用WCF通道(channel)代替靜態(tài)代理(svcutil proxy),直接調(diào)用服務(wù)操作。ChannelFactory< T> 允許我們?cè)谶\(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建一個(gè)代理與服務(wù)進(jìn)行交互。

 
 
 
  1. public class ContractDescription  
  2. {  
  3. public Type ContractType {get;set;}  
  4. //More members  
  5. }  
  6. public class ServiceEndpoint  
  7. {  
  8. public ServiceEndpoint(ContractDescription contract, 
    Binding binding, EndpointAddress address);  
  9. public EndpointAddress Address {get;set;}  
  10. public Binding Binding {get;set;}  
  11. public ContractDescription Contract {get;}  
  12. //More members  
  13. }  
  14. public abstract class ChannelFactory : ...  
  15. {  
  16. public ServiceEndpoint Endpoint {get;}  
  17. //More members  
  18. }  
  19. public class ChannelFactory< T> : ChannelFactory,...  
  20. {  
  21. public ChannelFactory(ServiceEndpoint endpoint);  
  22. public ChannelFactory(string configurationName);  
  23. public ChannelFactory(Binding binding, EndpointAddress 
    endpointAddress);  
  24. public static T CreateChannel(Binding binding, 
    EndpointAddress endpointAddress);  
  25. public T CreateChannel( );  
  26. //More Members  

我們需要從配置文件中獲取一個(gè)端點(diǎn)配置名稱,將其提交給 ChannelFactory< T> 構(gòu)造方法,也可以直接使用相應(yīng)的綁定和地址對(duì)象作為參數(shù)。然后,調(diào)用 CreateChannel() 方法獲取動(dòng)態(tài)生成代理對(duì)象的引用。有兩種方法關(guān)閉代理,將WCF通道轉(zhuǎn)型成 IDisposable,并調(diào)用 Dispose() 方法關(guān)閉代理;或者轉(zhuǎn)型成 ICommunicationObject,調(diào)用 Close() 方法。

 
 
 
  1. ChannelFactory< IMyContract> factory = new ChannelFactory
    < IMyContract>( );  
  2. IMyContract proxy1 = factory.CreateChannel( );  
  3. using(proxy1 as IDisposable)  
  4. {  
  5. proxy1.MyMethod( );  
  6. }  
  7. IMyContract proxy2 = factory.CreateChannel( );  
  8. proxy2.MyMethod( );  
  9. ICommunicationObject channel = proxy2 as ICommunicationObject;  
  10. Debug.Assert(channel != null);  
  11. channel.Close( ); 

注: WCF通道對(duì)象除了實(shí)現(xiàn)服務(wù)契約接口外,還實(shí)現(xiàn)了 System.ServiceModel.IClientChannel。

 
 
 
  1. public interface IClientChannel : IContextChannel, IChannel, 
    ICommunicationObject, IDisposable ...  
  2. {  

除創(chuàng)建 ChannelFactory< T> 對(duì)象實(shí)例外,我們還可以直接使用靜態(tài)方法 CreateChannel() 來創(chuàng)建代理。不過這需要我們提供端點(diǎn)地址和綁定對(duì)象。

 
 
 
  1. Binding binding = new NetTcpBinding( );  
  2. EndpointAddress address = new EndpointAddress
    ("net.tcp://localhost:8000");  
  3. IMyContract proxy = ChannelFactory< IMyContract>.
    CreateChannel(binding, address);  
  4. using(proxy as IDisposable)  
  5. {  
  6. proxy1.MyMethod( );  

以上就是我們對(duì)WCF通道的相關(guān)應(yīng)用的介紹。


分享題目:WCF通道具體應(yīng)用技巧分享
文章位置:http://www.5511xx.com/article/djigjii.html