WCF 摘要

WCF中实现双工通信

参考:

http://www.cnblogs.com/artech/archive/2007/03/02/661969.html

MEP,Message Exchange Pattern ,消息交互模式

WCF客户端与服务器之间是通过消息进行通讯,有必要了解WCF的消息交换模式,以对消息的发送和接受有更直观的理解。在WCF中,有三种消息交换模式:数据报模式、请求——响应模式、双工模式。

1.数据报模式(One Way Calls)/Datagram

数据报模式指的是发送端负责把消息发送给对方,并且收到确认消息后,就完成交互方式。在这种模式下,发送方唯一能确认的是消息发送成功,而对于消息是否最终到达服务的终结点,是否被成功处理,发挥的结果如何等都一无所知。即使客户端成功发送消息,也并不保证服务已经收到消息

数据报模式存在以下特点:

1)返回类型只能是void ;2)不能包含ref或者out类型参数; 3)只有客户端发起请求,服务端并不会对请求进行回复。

2.请求响应模式(Request/Reply)

在请求响应模式中,客户端发送一个消息并且接收一个返回消息来完成一次交互。在该模式中,消息的发起端必然是客户端,并且从服务端返回只有一条消息。客户端在发送出消息后,会阻止当前进程并且等待服务端返回消息。请求响应模式是缺省的消息交换模式,类似于Http中的请求/响应模式,这种交换模式是使用最多的一种。请求响应模式调用的实例包括远程调用(RPC)和浏览器的Get请求。此模式也称为半双工。

 具有如下特点:

1)调用方法后需要等待服务的消息返回; 2)在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明。

 3.双工模式(Duplex)

在双工模式中,客户端和服务端都可以任意地向对方发送消息,而对方也可以以任意的次序来接收消息。在这种模式下,发送端和接收端的概念不再适用,取而代之的是通信的两个端点。

两种典型的双工MEP

双工(Duplex)模式的消息交互方式体现在消息交换过程中,参与双方均可以向对方发送消息。

双工消息交互模式使客户端回调(CallBack)客户端操作成为可能。

1.请求过程中的回调

这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用时,附加上一个回调对象;服务在相应的处理中,通过客户端附加的回调对象(实际上是调用回调服务的代理对象)来回调客户端的操作(该操作在客户端执行)。整个消息交换的过程中,实际上由两个基本的消息交换构成,其一是客户端正常的服务请求,其二是服务端对客户端的回调。两者可以采用请求响应模式,也可以采用单向(One Way)的MEP进行消息交换。

2.订阅—发布

订阅发布模式是双工模式的一个典型的变体。在这个模式下,消息交换的双方变成了订阅者和发布者,若干订阅者就某个主题相发布者申请订阅,发布者将所有的订阅者保存在一个订阅列表中,在某个时刻将主题发送给该主题的所有订阅者。实际上基于订阅—发布模式的消息交换也可以看成是两个基本模式下消息交换的组合,申请订阅是一个单向模式的消息交换(如果订阅者行为得到订阅的回馈,该消息交换也可以采用请求—响应模式);而主题发布也是一个基于单向模式的消息交换过程。

原文地址:https://www.cnblogs.com/RealAlex/p/2777059.html