wcf入门(5)——双工模式
本文demo已上传至github:xinyuehtx/WCFdemo
这个博客会介绍如何设置服务操作调用模式的第三种双工模式(Duplex)
双工模式
双工模式意味这个客户端可以向服务端发送消息,同时服务端也可以向客户端发送消息
双工模式实际上是由客户端->服务端
的服务协议和服务端->客户端
的回调协议组成。
而每个协议中的方法都可以选择是单向模式,或者是请求答复模式。
因此双工模式实际上是之前两种模式的组合。
如图所示在创建双工模式的协定时,我们需要定义两个接口IDuplex
用于客户端向服务端发送消息(或者称之为调用服务端方法),IDuplexCallback
用于服务端向客户端发送消息(或者称之为调用客户端方法)
注意我们通过设置 ServiceContract
的CallbackContract
指定服务的回调接口
在服务端实现上我们额外通过OperationContext
获取定义为IDuplexCallback
接口的通道。
通过这个通道(客户端的透明代理),在服务端就可以调用客户端的方法
在客户端实现上也有变动,我们需要继承DuplexClientBase<T>
,同时我们的构造函数也需要额外传入一个InstanceContext
在客户端的使用时,我们需要将回调接口的实现注入到InstanceContext
中,并且传入客户端的构造函数
运行程序,我们发现,客户端向服务端发送了消息,服务端也向客户端发送了消息。实现了双向的通信
小结
我们研究了WCF服务的双工模式,其特点有
- 可以实现双向通信
- 协定的每个方法都可以通过
OperationContract
指定为单向或者请求答复模式 - 双工协定要求Binding支持双工模式(如
NetTcpBinding
) - 双工模式在底层实现利用了会话机制,但是在指定服务协定时可以不要求会话(Require)。
参考链接:
- 请求-答复服务 - Microsoft Docs
- 单向服务 - Microsoft Docs
- 双工服务 - Microsoft Docs
本文会经常更新,请阅读个人博客原文: https://xinyuehtx.github.io/ ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
wcf入门(5)——双工模式相关推荐
- WCF服务创建与使用(双工模式)
昨天发布了<WCF服务创建与使用(请求应答模式)>,今天继续学习与强化在双工模式下WCF服务创建与使用,步骤与代码如下. 第一步,定义服务契约(Service Contract),注意Se ...
- [WCF编程]1.WCF入门示例
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...
- 在WCF中实现双工通信(转载)
首先声明此文章是转载博客园蒋老师之作:http://www.cnblogs.com/artech/archive/2007/03/02/661969.html 双工(Duplex)模式的消息交互方式体 ...
- WCF三种通信模式(转)
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
- WCF 宿主与通信模式(二)
宿主 每个WCF服务都必须托管在Windows进程中,该进程称为宿主进程(host process) 单个宿主进程可以托管多个服务,相同的服务类型也可以托管在多个宿主进程中. wcf中托管服务一般有一 ...
- [转载]我的WCF之旅(3):在WCF中实现双工通信
http://www.cnblogs.com/artech/archive/2007/03/02/661969.html 双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向 ...
- C#-异步编程及WCF入门
异步编程 异步代码在等待I/O请求响应的同时,可通过生成更多的线程,处理更多的请求 异步代码在等待I/O请求的同时,可生成UI交互线程,并通过将耗时的工作转移到其他CPU内核的方式,让UI的响应速度更 ...
- WCF 入门之旅(4): 怎样用客户端调用WCF服务
WCF 入门之旅(4): 怎样用客户端调用WCF服务 前面的demo已经能够跑起来,现在开始考虑用客户端来测试所写的应用了,首先用个普通的应用程序来调用所写的wcf服务吧.其实最后运行wcf服务后的页 ...
- WCF入门(六)——回调
在上篇文章中介绍了一下WCF中的客户端到服务器端的单向通知,在实际应用中,还经常使用服务器端到客户端的单向通知.例如,在聊天室里,我们需要把某人的发言广播给每一个人.对于这种单向通知,我们一般称为回调 ...
最新文章
- WDS部署服务之四镜像捕获(1)
- 多进程对 MySQL update的影响
- ajaxToolKit中 的折叠面板用法--Accordion
- 第四届西安邮电大学acm-icpc校赛 流浪西邮之寻找火石碎片 多体积条件背包
- wxWidgets:wxRichTextCtrl概述
- python按字节读取文件_Python读取二进制文件
- 精选30张炫酷的动态交互式图表,Pandas一键生成,通俗易懂
- java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)
- 话说Python:非主流编程语言
- 会议容易中吗_【留学评估】美国留学后就业真的和想象中的一样容易吗?
- ONNX系列六 --- 在Java中使用可移植的ONNX AI模型
- linux搭建Django环境,linux下搭建python Django环境及启动一个示例
- 《卷积神经网络》学习笔记
- DNS、NS、DDNS
- mysql5.6卸载干净_Mysql完全干净卸载教程
- 【K8S etcd篇】部署etcd 3.4.14 集群
- 温湿度传感器—HDC1080
- OpenGL 4 : 一个漂亮的心 For you, My Love
- Excel用户如何打破内卷?只需要一个新软件,就能突破excel天花板
- 如何打开倾斜摄影数据osgb