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

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用WCF異步調用

隨著時代的發(fā)展,異步調用在編程中是不可缺少的,這里就關于WCF異步調用簡單的和大家分享一下吧。WCF 與Web Service不同的是,當我們定義了服務契約的操作時,不管是通過ChannelFactory創(chuàng)建服務代理對象,還是通過SvcUtil的默認方式生成服務代理對象,客戶端在調用這些代理對象時,都無法直接實現(xiàn)異步方式的調用。例如,對于如下的服務操作定義:

創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務器托管報價,主機托管價格性價比高,為金融證券行業(yè)重慶服務器托管,ai人工智能服務器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

 
 
  1. [OperationContract]  
  2.  
  3. Stream TransferDocument(Document document);  

在調用代理對象的方法時,我們無法找到對應于TransferDocument()操作的BeginTransferDocument()和EndTransferDocument()異步方法。

#T#這樣的設計使得我們無法通過編程方式異步地調用服務的操作,除非我們在定義服務接口時,直接加入相關操作的異步方法。然而,這又直接導致了服務的設計與方法調用方式之間的耦合。一個好的框架設計要素在于,不管客戶端的調用方式(同步或者異步),服務的設計與實現(xiàn)應該是一致的。對于服務的設計者而言,在設計之初,就不應該去考慮服務的調用者調用的方式。換言之,服務操作究竟是否采用異步方式,應該由客戶端的調用者決定。因此,所有與WCF異步調用相關的內容應該只與客戶端相關。WCF遵循了這一規(guī)則。

在我編寫的應用程序中,會暴露一個傳送文檔文件的服務操作。我并不知道也并不關心調用該操作的客戶端是否采用異步方式。因此,如上所述的服務操作定義是完全正確的。

那么,客戶端究竟應該如何執(zhí)行WCF異步調用呢?如果采用編程方式獲得服務代理對象,這一問題會變得比較糟糕。因為我將服務契約的定義單獨形成了一個程序集,并在客戶端直接引用了它。然而,在這樣的服務契約程序集中,是沒有包含異步方法的定義的。因此,我需要修改在客戶端的服務定義,增加操作的異步方法。這無疑為服務契約的重用帶來障礙。至少,我們需要在客戶端維持一份具有異步方法的服務契約。

所幸,在客戶端決定采用異步方式調用我所設計的服務操作時,雖然需要修改客戶端的服務契約接口,但并不會影響服務端的契約定義。因此,服務端的契約定義可以保持不變,而在客戶端則修改接口定義如下:

 
 
  1. [ServiceContract]   
  2. public interface IDocumentsExplorerService   
  3. {   
  4. [OperationContract]   
  5. Stream TransferDocument(Document document);   
  6.  
  7. [OperationContract(AsyncPattern = true)]   
  8. IAsyncResult BeginTransferDocument(Document document,   
  9. AsyncCallback callback, object asyncState);   
  10.  
  11. Stream EndTransferDocument(IAsyncResult result);   
  12. }   

注意,在BeginTransferDocument()方法上,必須在OperationContractAttribute中將AsyncPattern屬性值設置為true,因為它的默認值為false。


網(wǎng)站題目:如何使用WCF異步調用
本文網(wǎng)址:http://m.5511xx.com/article/coeopij.html