|
系列文章導航:
WCF從理論到實踐(16):操作重載(帶視頻+ppt+源碼)
WCF從理論到實踐(17):OO大背離(帶視頻+ppt+源碼)
本文目的
通過閱讀本文,您能了解以下知識
1) 如何在WCF中實現異步
2) 異步操作的優缺點及其應用場合
3) 總結對比各種異步操作的實現方式
4) 代碼不騙人,實現一個WCF異步小范例
本文適合的讀者
本文因為涉及一些常用的基礎知識和開發技巧,需要對多線程等具有一定的認識,所以初學者可能不能立即掌握,本文適合WCF中級用戶或有其他分布式技術開發經驗的WCF初學者
如何在WCF中實現異步
在ARM(異步編程模型)中,我們經常看到BeingXXX(..),EndXXX(..)這樣的函數定義,那和他們對應的同步方法還有XXX(..),比如FileStream對象,它既包括同步方式int Read(byte[] buffer,int offset,int count),還有IAsyState BeginRead(byte[] buffer,int offset,int count,IAsyCallback callback,Object asyState)和int EndRead(IAsyState ar)這樣的異步方式,如果我們的WCF服務程序也和FileStream設計一樣,那我們一些開發人員要跳樓了.本來一個業務方法的實現現在變為了3個,工作量增加了2倍.為何有這樣的說法,因為這樣的架構不是一個好架構,作為一個優秀的框架,WCF肯定不會犯如此低級的錯誤,異步與否本來應該是由客戶端來決定的,所以我們的服務端實現無需關心異步與否.下面我們來看一下如何實現異步,WCF中實現異步是一件非常簡單的事情,我們用svcutil來生成客戶端代理代碼的時候,只需添加 /async 便可以生成有異步功能的代理類了.而在IDE中,操作就更加簡單,就是在添加ServiceReference的時候,選擇高級選項,鉤選Generate Asynchronus operations,如圖:
生成異步操作的代理類下就會增加BeginXXX和EndXXX方法。比如我們示例項目中服務契約中有



NET技術:WCF從理論到實踐(11)-異步,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。