亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WCF中怎么實現異步調用

發布時間:2021-07-23 16:26:22 來源:億速云 閱讀:121 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關WCF中怎么實現異步調用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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

 [OperationContract]   Stream TransferDocument(Document document);

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

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

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

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

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

[ServiceContract]   public interface IDocumentsExplorerService   {   [OperationContract]   Stream TransferDocument(Document document);    [OperationContract(AsyncPattern = true)]   IAsyncResult BeginTransferDocument(Document document,   AsyncCallback callback, object asyncState);    Stream EndTransferDocument(IAsyncResult result);   }

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

關于WCF中怎么實現異步調用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

wcf
AI

凤山县| 黎平县| 永清县| 莎车县| 唐山市| SHOW| 宜兰县| 紫阳县| 道孚县| 苍梧县| 杭州市| 南皮县| 昭平县| 栾城县| 双流县| 定兴县| 峡江县| 剑川县| 新和县| 彰武县| 茂名市| 吴旗县| 吉木萨尔县| 芷江| 盘锦市| 宜丰县| 原阳县| 芜湖县| 崇仁县| 农安县| 公主岭市| 翁源县| 桂平市| 乐清市| 上饶市| 鄂伦春自治旗| 鱼台县| 正阳县| 临猗县| 馆陶县| 福贡县|