WCF从理论到实践(8):事件广播

系列文章导航:

WCF从理论到实践(1):揭开神秘面纱

WCF从理论到实践(2):决战紫禁之巅

WCF从理论到实践(3):八号当铺之黑色契约

WCF从理论到实践(4):路在何方

WCF从理论到实践(5):Binding细解

WCF从理论到实践(6):WCF架构

WCF从理论到实践(7):消息交换模式

WCF从理论到实践(8):事件广播

WCF从理论到实践(9):实例模式和对象生命周期

WCF从理论到实践(10):异常处理

WCF从理论到实践(11)-异步

WCF从理论到实践(12):事务

WCF从理论到实践(13):事务投票

WCF从理论到实践(14):WCF解决方案模板

WCF从理论到实践(15):响应变化

WCF从理论到实践(16):操作重载(带视频+ppt+源码)

WCF从理论到实践(17):OO大背离(带视频+ppt+源码)


上文讨论了WCF中三种消息交换模式,one-way,request/reply,duplex。前两项比较简单,无需多言,duplex相对比较复杂,上文只是实现了简单的回调,在真正应用的时候,还有许多值得注意之处,本文就结合一个实际的应用例子来谈论下duplex的具体应用和非常值得我们注意的地方。

本文的出发点

通过阅读本文,您能理解以下知识:

  1. 如何实现一个基于duplex的事件广播
  2. 解析在实现duplex事件广播中的几个问题
  3. 初步探讨一下异步

本文适合的读者

本文属于中等难度的文章,需要有WCF消息交换和windows应用程序开发相关的基础知识,有关WCF消息交换,请阅读http://www.cnblogs.com/jillzhang/archive/2008/02/17/1071521.html

如何实现一个基于duplex的事件广播

在讨论如何实现之前,先看一下本文的范例所要实现的功能是什么?本文的范例实现了一个简单的分布式任务管理系统,简单的说,它是在服务端(Server Point)执行任务(Job),并且将任务的信息呈现给客户端。它有如下特征:

  1. 通过调用服务端的Accept(),客户端能连接上服务端,并保持会话。
  2. 客户端在启动的时候,可以通过远程调用GetJobs()来获取当前服务端中全部的任务,并将这些任务在客户端窗体中用列表控件呈现出来
  3. 客户端能通过调用AddJob()向服务端添加任务,当服务端完成添加操作之后,引发添加完成的事件,并向全部的客户端广播该事件
  4. 当客户端服务端发来的添加新任务事件广播的时候,客户端将新增任务添加到列表控件加以呈现
  5. 客户端可以命令服务端执行具体某个任务,当任务在开始执行和执行结束后,服务端都会像全部客户端广播任务的执行情况,并且任务的执行和事件的广播异步执行
  6. 客户端收到广播后,便可以更新任务信息。

和以前文章不同,本文先给出最后实现的效果

如何您要了解该范例得具体设计和实现,可以下载下面的文件进行分析:
范例最终实现:/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):事件广播,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。