|
系列文章導(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+源碼)
上文討論了WCF中三種消息交換模式,one-way,request/reply,duplex。前兩項(xiàng)比較簡(jiǎn)單,無(wú)需多言,duplex相對(duì)比較復(fù)雜,上文只是實(shí)現(xiàn)了簡(jiǎn)單的回調(diào),在真正應(yīng)用的時(shí)候,還有許多值得注意之處,本文就結(jié)合一個(gè)實(shí)際的應(yīng)用例子來(lái)談?wù)撓耫uplex的具體應(yīng)用和非常值得我們注意的地方。
本文的出發(fā)點(diǎn)
通過(guò)閱讀本文,您能理解以下知識(shí):
- 如何實(shí)現(xiàn)一個(gè)基于duplex的事件廣播
- 解析在實(shí)現(xiàn)duplex事件廣播中的幾個(gè)問(wèn)題
- 初步探討一下異步
本文適合的讀者
本文屬于中等難度的文章,需要有WCF消息交換和windows應(yīng)用程序開(kāi)發(fā)相關(guān)的基礎(chǔ)知識(shí),有關(guān)WCF消息交換,請(qǐng)閱讀http://www.cnblogs.com/jillzhang/archive/2008/02/17/1071521.html
如何實(shí)現(xiàn)一個(gè)基于duplex的事件廣播
在討論如何實(shí)現(xiàn)之前,先看一下本文的范例所要實(shí)現(xiàn)的功能是什么?本文的范例實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的分布式任務(wù)管理系統(tǒng),簡(jiǎn)單的說(shuō),它是在服務(wù)端(Server Point)執(zhí)行任務(wù)(Job),并且將任務(wù)的信息呈現(xiàn)給客戶端。它有如下特征:
- 通過(guò)調(diào)用服務(wù)端的Accept(),客戶端能連接上服務(wù)端,并保持會(huì)話。
- 客戶端在啟動(dòng)的時(shí)候,可以通過(guò)遠(yuǎn)程調(diào)用GetJobs()來(lái)獲取當(dāng)前服務(wù)端中全部的任務(wù),并將這些任務(wù)在客戶端窗體中用列表控件呈現(xiàn)出來(lái)
- 客戶端能通過(guò)調(diào)用AddJob()向服務(wù)端添加任務(wù),當(dāng)服務(wù)端完成添加操作之后,引發(fā)添加完成的事件,并向全部的客戶端廣播該事件
- 當(dāng)客戶端服務(wù)端發(fā)來(lái)的添加新任務(wù)事件廣播的時(shí)候,客戶端將新增任務(wù)添加到列表控件加以呈現(xiàn)
- 客戶端可以命令服務(wù)端執(zhí)行具體某個(gè)任務(wù),當(dāng)任務(wù)在開(kāi)始執(zhí)行和執(zhí)行結(jié)束后,服務(wù)端都會(huì)像全部客戶端廣播任務(wù)的執(zhí)行情況,并且任務(wù)的執(zhí)行和事件的廣播異步執(zhí)行
- 客戶端收到廣播后,便可以更新任務(wù)信息。
和以前文章不同,本文先給出最后實(shí)現(xiàn)的效果
如何您要了解該范例得具體設(shè)計(jì)和實(shí)現(xiàn),可以下載下面的文件進(jìn)行分析:
范例最終實(shí)現(xiàn):/Files/jillzhang/Jillzhang.Event.rar
我這里只列出范例中項(xiàng)目列表
項(xiàng)目名稱 | 項(xiàng)目描述 | |
Jillzhang.Event.Core | 該項(xiàng)目用于定義WCF的契約,主要包括IServer服務(wù)契約,ICallback用于回調(diào)的服務(wù)契約,Job數(shù)據(jù)契約 | |
Jillzhang.Event.Service | 服務(wù)端的具體實(shí)現(xiàn),其中Server實(shí)現(xiàn)了一個(gè)有廣播事件能力的服務(wù)契約 | |
Jillzhang.Event.Host | 服務(wù)的宿主程序,一個(gè)ConsoleApplication | |
Jillzhang.Event.Client | 客戶端實(shí)現(xiàn),用于消費(fèi)服務(wù)端。 | |
Jillzhang.Event.Client2 | 和Jillzhang.Event.Client是一個(gè)實(shí)現(xiàn),但為了驗(yàn)證廣播,可與Jillzhang.Event.Client同時(shí)消費(fèi)服務(wù)端 |
NET技術(shù):WCF從理論到實(shí)踐(8):事件廣播,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。