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