第三章 信道形状
来源:互联网 发布:c 调用tensorflow 编辑:程序博客网 时间:2024/05/21 07:46
信道形状
WCF支持不同的消息交换模式:单向,双工和请求-回复。为了实现每种方式,WCF提供了10种不同的称作信道形状的接口。其中五个形状称作IOutputChannel, IInputChannel, IDuplexChannel, IRequestChannel和IReplyChannel.每个形状都有一个等效的支持会话的形状。它们包括IOutputSessionChannel, IInputSessionChannel, IDuplexSessionChannel, IRequestSessionChannel和IReplySessionChannel.这些接口在一个信道栈中实现了不同的消息交换模式。在这一部分,我们将查看每一个通信模式以及与它们关联的多种接口。
单向通信模式
在单向通信模式中,消息仅被发送到唯一的地方,从客户度到服务端。当发送方当前不需要反馈消息时,单向通信很常用;发送方仅仅需要一个消息已经被发送的确认。消息的发送,就是消息交换的终点。用来实现单向通信的两个接口是IOutputChannel和IInputChannel.图片3.2 显示了在消息如何在客户端和服务端的单向通信中流转。
在这个模式中,IOutputChannel接口用来发送消息,IInputChannel用来接收消息。列表3.1 显示了使用IOutputChannel信道类型发送消息的客户端应用程序。
列表3.1 IOutputChannel 例子
双工通信
双工通信使用两个单向信道形状,并附加另外一个称为IDuplexChannel的信道形状,如图片3.3所示。双工通信相比单向通信的优势在于消息可以从客户端或者服务端发出。
双工通信的例子是事件提醒系统。服务端将向事件接收端发送事件。客户端提供一个服务端用来发送消息的终结点。列表3.2显示了使用IDuplexChannel信道形状通信的客户端。
列表3.2 IDuplexChannel例子
请求-回复通信
请求-回复通信是双向通信的特殊形式,它的每个请求只有一个回复,而且它总是在客户端初始化。在客户端发送一个请求后,它必须在发送另外一个请求前等待一个回复。
最常见的请求-回复通信是浏览器的HTTP请求。浏览器向服务器发送一个HTTP请求,比如GET或者POST,服务器处理请求,然后发送一个回复。WCF使用如图3.4中显示的IRequestChannel和IReplyChannel接口来处理请求-回复通信。
列表3.3 显示了一个使用IRequestChannel接口来发送消息的客户端应用程序。注意Request方法的返回参数是Reply消息。
列表3.3 IRequestChannel例子
形状改变
在HTTP协议中有一个固有的请求-回复特性,因此HTTP传输信道使用请求-回复信道形状。其他形式的通信,比如单向和在HTTP协议上的双工通信,都是通过形状改变实现的。它是通过在传输信道上层加一层协议信道来支持单向或者双工通信。列表3.4 显示了一个在一个HTTP传输信道上添加一个单向形状改变绑定元素OneWayBindingElement的自定义绑定。我们将会在第十二章”对等网络”中看到更多使用CompositeDuplexBindingElement绑定元素的信道改变的高级例子。
列表3.4 IRequestChannel例子
- 第三章 信道形状
- 第三章 信道-操作契约和信道形状
- 第三章 信道
- 第三章 信道 ICommunicationObject
- 第三章 信道 总结
- 第三章-信道与信道容量(二)
- 第三章 数据链路层 3.3使用广播信道的数据链路层
- 第三章 数据链路层 3.4使用广播信道的以太网
- 信道
- 信道
- 信道
- 信道
- android群英传笔记--第三章--自定义控件三简单形状View
- 《getting started with p5.js》(中文版) 第三章 画:定义和画简单的形状
- 第五章 JavaFx处理形状
- 信道与信道栈
- 逻辑信道、传输信道、物理信道
- 逻辑信道、传输信道、物理信道
- [代码]创建XDocument对象(LINQ to XML)
- zz iccr做覆盖率分析
- mysql表类型MyISAM和InnoDB区别
- 浮点数在内存中的存储方式(含c语言实例)
- 大规模分布式消息中间件简介
- 第三章 信道形状
- ie 要在子页面中向最顶层的页面添加一个dom对象
- 两个ExtJs可视化设计器
- VMware Player NAT模式无法自动获得IP地址的原因及解决方案(其中一个)
- PHP,时间转换为XXX之前函数
- 如何能实现梦想?
- 错误empty character constant的解决办法
- jpa +hibernate+spring +ehcache config
- SSH