WCF消息交换模式之双工通讯(Duplex)
2015-02-04 23:20
260 查看
WCF消息交换模式之双工通讯(Duplex)
双工通讯Duplex具有以下特点:1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作
2.消息交换过程中,服务端和客户端角色会发生调换
3.服务端处理完请求后,返回给客户端的不是reply,而是callback请求。
4.Duplex模式对Bindding有特殊的要求,它要求支持Duplex MEP(Message Exchange Pattern),如WSDualHttpBinding和NetTcpBinding
注意:在WCF预定义绑定类型中,WSDualHttpBinding和NetTcpBinding均提供了对双工通信的支持,但是两者在对双工通信的实现机制上却有本质的区别。WSDualHttpBinding是基于HTTP传输协议的;而HTTP协议本身是基于请求-回复的传输协议,基于HTTP的通道本质上都是单向的。WSDualHttpBinding实际上创建了两个通道,一个用于客户端向服务端的通信,而另一个则用于服务端到客户端的通信,从而间接地提供了双工通信的实现。而NetTcpBinding完全基于支持双工通信的TCP协议。
我今天的实例讲的就是双工通讯的一个使用场景订阅-发布模式,此时消息的双方变成了订阅者和发布者。订阅者有两个操作(订阅消息、取消订阅),当订阅者订阅消息后,发布者就开始向订阅者广播消息,当订阅者取消订阅后,就不会接收到广播的消息。具体如下图所示:
View Code
接口里面只定义了订阅者(客户端)调用的订阅消息和取消订阅的方法,以及服务端调用客户端的回调方法PublishMessage,然后我们在FormPublisher.cs里面实现该接口,具体代码如下:
View Code
注意:当前使用了实例上下文模式为单例模式,我们启用的是同一个实例上下文模式,即客户端共享同一个同一个会话,关于实例模式有三种:
1. Single —— 表示所有的客户端共享一个会话(服务对象)(服务关闭时才会销毁服务对象)
2. PerCall —— 表示每次调用都会创建一个会话(服务对象)(调用完毕后就会销毁服务对象)
3. PerSession —— 表示为每个连接(每个客户端代理对象) 创建一个会话(服务对象),只有指定IsTerminating=true的操作被调用,或者是设定的SessionTimeout超时的时候,服务对象会被销毁。但支持Session的Binding只有:WSHttpBinding、WSDualHttpBinding、WSFederationHttpBinding、NetTcpBinding。
关于实例上下文模式,我将在后期博文中详细介绍。
完成后,我们就开始配置我们的服务端的”ABC”,服务端的配置文件如下:
View Code
到此我们的发布者(服务端)的代码完成,编译后启动我们的Publisher.exe就可以看到服务寄宿成功的界面如下图所示:
View Code
到此,我们整个解决方案已经完成,接下来,我们运行程序来验证我们需要的结果,首先启动发布者(即服务端),再启动订阅者(即客户端,注意:这里我们启动两个,方便验证程序效果),运行效果如下:
效果1:client1和client2都订阅消息,此时两个客户端都能收到广播的消息
效果2:client1订阅消息和client2取消订阅,此时只有client1能收到广播的消息
效果3:client1取消订阅和client2订阅消息,此时只有client2收到广播的消息
相关文章推荐
- WCF系列教程之消息交换模式之双工通讯(Duplex)
- WCF初探-5:WCF消息交换模式之双工通讯(Duplex)
- WCF消息交换模式之Duplex
- WCF 消息交换模式
- WCF的消息交换模式
- [老老实实学WCF] 第十篇 消息通信模式(下) 双工
- WCF面向服务应用程序系列之十六:消息交换模式(MEP)-请求/应答操作
- 化零为整WCF(6) - 消息处理(异步调用OneWay, 双向通讯Duplex)
- wcf 基础知识 之 消息交换模式 response/reply oneway deplex
- WCF 消息交换模式 转
- 通过实例分析WCF Duplex消息交换
- WCF从理论到实践(7):消息交换模式
- WCF入门(三)——消息交换模式
- 初学WCF之消息模式——双工模式
- WCF的消息交换模式
- 艾伟:WCF从理论到实践(7):消息交换模式
- 化零为整WCF(6) - 消息处理(异步调用OneWay, 双向通讯Duplex)
- 通过实例分析WCF Duplex消息交换(转载)
- WCF从理论到实践(7):消息交换模式 (转)
- WCF学习总结——WCF消息交换模式