|
系列文章導(dǎo)航:
WCF從理論到實(shí)踐(2):決戰(zhàn)紫禁之巔
WCF從理論到實(shí)踐(3):八號(hào)當(dāng)鋪之黑色契約
WCF從理論到實(shí)踐(5):Binding細(xì)解
WCF從理論到實(shí)踐(9):實(shí)例模式和對(duì)象生命周期
WCF從理論到實(shí)踐(16):操作重載(帶視頻+ppt+源碼)
WCF從理論到實(shí)踐(17):OO大背離(帶視頻+ppt+源碼)
本文目的
通過(guò)閱讀本文,您能了解以下知識(shí)
1) 如何在WCF中實(shí)現(xiàn)異步
2) 異步操作的優(yōu)缺點(diǎn)及其應(yīng)用場(chǎng)合
3) 總結(jié)對(duì)比各種異步操作的實(shí)現(xiàn)方式
4) 代碼不騙人,實(shí)現(xiàn)一個(gè)WCF異步小范例
本文適合的讀者
本文因?yàn)樯婕耙恍┏S玫幕A(chǔ)知識(shí)和開(kāi)發(fā)技巧,需要對(duì)多線(xiàn)程等具有一定的認(rèn)識(shí),所以初學(xué)者可能不能立即掌握,本文適合WCF中級(jí)用戶(hù)或有其他分布式技術(shù)開(kāi)發(fā)經(jīng)驗(yàn)的WCF初學(xué)者
如何在WCF中實(shí)現(xiàn)異步
在ARM(異步編程模型)中,我們經(jīng)常看到BeingXXX(..),EndXXX(..)這樣的函數(shù)定義,那和他們對(duì)應(yīng)的同步方法還有XXX(..),比如FileStream對(duì)象,它既包括同步方式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服務(wù)程序也和FileStream設(shè)計(jì)一樣,那我們一些開(kāi)發(fā)人員要跳樓了.本來(lái)一個(gè)業(yè)務(wù)方法的實(shí)現(xiàn)現(xiàn)在變?yōu)榱?個(gè),工作量增加了2倍.為何有這樣的說(shuō)法,因?yàn)檫@樣的架構(gòu)不是一個(gè)好架構(gòu),作為一個(gè)優(yōu)秀的框架,WCF肯定不會(huì)犯如此低級(jí)的錯(cuò)誤,異步與否本來(lái)應(yīng)該是由客戶(hù)端來(lái)決定的,所以我們的服務(wù)端實(shí)現(xiàn)無(wú)需關(guān)心異步與否.下面我們來(lái)看一下如何實(shí)現(xiàn)異步,WCF中實(shí)現(xiàn)異步是一件非常簡(jiǎn)單的事情,我們用svcutil來(lái)生成客戶(hù)端代理代碼的時(shí)候,只需添加 /async 便可以生成有異步功能的代理類(lèi)了.而在IDE中,操作就更加簡(jiǎn)單,就是在添加ServiceReference的時(shí)候,選擇高級(jí)選項(xiàng),鉤選Generate Asynchronus operations,如圖:
生成異步操作的代理類(lèi)下就會(huì)增加BeginXXX和EndXXX方法。比如我們示例項(xiàng)目中服務(wù)契約中有



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