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