WCF 之 消息交换模式

消息交换模式(Message Exchange Pattern:MEP)在SOA中是一个重要的概念。MEP定义了参与者进行消息交换的模板,这是一个很抽象的定义。实际上我们可以这样理解MEP:消息交换模式(MEP)代表一系列的模板,它们定义了消息的发送者和接收者相互进行消息传输的次序。消息交换模式包括:数据报模式(Datagram)、请求/回复模式(Request/Reply)和双工模式(Duplex)。

1.数据报模式(Datagram)

数据报模式是最简单的消息交换模式,又称为发送/遗忘(Send/Forget)或单向模式(One-way)。数据报模式基于从一个源到一个或多个目的地的单向消息传输。在数据报模式下,消息的发送方将消息发送到接收方,并不希望收到对方的回复。

2.请求/回复模式(Request/Reply)

请求/回复模式是使用得最多的一种模式。在这种模式下,消息发送方将消息发送给接收方后会等待对方的回复。请求/回复模式一般采用同步的通信模式。

3.双工模式(Duplex)

如果采用双工的消息交换模式,在进行消息交换过程中,任何一方都可以向对方发送消息。双工通信使服务端回调客户端操作成为可能。我熟悉的订阅/发布模式就是比较典型的双工通信。订阅/发布模式下的消息交换双方的角色从传统的发送方和接收方变成订阅方和发布方。订阅方向发布方发送对某一主题的订阅请求,发布方接收到订阅消息后将订阅方添加到订阅列表中。主题发布的时候,发布方提取当前主题的所有订阅方,对它们进行消息广播。

消息的交换依赖于网络传递,不同的网络传输协议对双工通信具有不同的支持方式。对于TCP来说,其协议本身就是全双工的网络通信协议,所以能够提供双工通信原生的支持。但是对于HTTP来说,它本身就是简单的基于请求/回复的网络协议,是不支持双工通信的。WCF通过WsFualHttpBinding实现了基于HTTP的双工通信,实际上是采用两个HTTP通道实现。

时间: 2024-08-05 11:36:12

WCF 之 消息交换模式的相关文章

WCF消息交换模式之请求-响应模式

WCF的消息交换模式(MEP)有三种:请求/响应.单向模式和双工模式.WCF的默认MEP是请求/响应模式. 请求/响应模式操作签名代码如下,无需指定模式,默认就是. [OperationContractAttribute] string Hello(string greeting,string mesg); [OperationContractAttribute] void SaveMesg(string mesg); 请求/响应模式内容: 客户端可以传递一个或多个参数给服务操作方法,服务操作方

WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)

1.使用WCF请求与答复模式须知 (1).客户端调用WCF服务端需要等待服务端的返回,即使返回类型是void (2).相比Duplex来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后,消息交换就结束了 (3).在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明. (4).它是缺省的消息交换模式,设置OperationContract便可以设置为此种消息交换模式 2.代码示例 服务层接口IReqReplyService.cs代码如下: using System; usi

WCF初探-3:WCF消息交换模式之单向模式

1.单向模式(One-Way Calls): 在这种交换模式中,存在着如下的特征: 只有客户端发起请求,服务端并不会对请求进行回复 不能包含ref或者out类型的参数 没有返回值,返回类型只能为void 通过设置OperationContract的IsOneWay=True可以将满足要求的方法设置为这种消息交换模式 接 下来,我们通过实例来演示这种模式,首先新建一个WcfDemo1的解决方案,添加名称为Service的类库项目作为服务端,新建IOneWay接口和 OneWay类,由于单向模式中服

WCF初探-4:WCF消息交换模式之请求与答复模式

1.请求与答复模式( Request/Reply) 这种交换模式是使用最多的一中,它有如下特征: 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 类型 相比Duplex来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后,消息交换就结束了. 在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明. 它是缺省的消息交换模式,设置OperationContract便可以设置为此种消息交换模式 接下来我们通过实例来演示一下,参照WCF消息交换模式之单向模式中的例子,

WCF初探-5:WCF消息交换模式之双工通讯(Duplex)

双工通讯Duplex具有以下特点: 1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作 2.消息交换过程中,服务端和客户端角色会发生调换 3.服务端处理完请求后,返回给客户端的不是reply,而是callback请求. 4.Duplex模式对Bindding有特殊的要求,它要求支持Duplex MEP(Message Exchange Pattern),如WSDualHttpBinding和NetTcpBinding 注意:在WCF预定义绑定类型中,WSDualHttpBinding和

消息交换模式

WCF之消息模式

请求/响应:所有操作的默认行为,在WSDL中表现为Input/Output元素. One_Way. 在WSDL中只有Input,没有回应(Output),所以没有异常报告. 单向操作只会在发出调用的瞬间阻塞客户端,但是如果发出了多个单向调用,WCF会把这些调用放入队列,由于队列是有限容量的,过多数量的调用会被阻塞,直到有的请求出列,然后调用入列,才会解除客户端的阻塞. 当要保证消息确实到达时,使用可靠性消息/MSMQ来暂时/长期保证. 其无法维持客户端状态,所以应该是终止会话前的最后一个操作.

[老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向

老老实实学WCF 第九篇 消息通信模式(上) 请求应答与单向 通过前两篇的学习,我们了解了服务模型的一些特性如会话和实例化,今天我们来进一步学习服务模型的另一个重要特性:消息通信模式. WCF的服务端与客户端在通信时有三种模式:单向模式.请求/应答模式和双工模式. 如果选用了单向模式,调用方在向被调用方进行了调用后不期待任何回应,被调用方在执行完调用后不给调用方任何反馈.如客户端通过单向模式调用了一个服务端的操作后,就去干别的了,不会等待服务端给他任何响应,他也无从得知调用是否成功,甚至连发生了

[老老实实学WCF] 第十篇 消息通信模式(下) 双工

原文:[老老实实学WCF] 第十篇 消息通信模式(下) 双工 老老实实学WCF 第十篇 消息通信模式(下) 双工 在前一篇的学习中,我们了解了单向和请求/应答这两种消息通信模式.我们知道可以通过配置操作协定的IsOneWay属性来改变模式.在这一篇中我们来研究双工这种消息通信模式. 在一定程度上说,双工模式并不是与前面两种模式相提并论的模式,双工模式的配置方法同前两者不同,而且双工模式也是基于前面两种模式之上的. 在双工模式下,服务端和客户端都可以独立地调用对方,谁都不用等待谁的答复,同样也不期