您的位置:知识库 » .NET技术

[WCF中的Binding模型]之二: 信道与信道栈(Channel and Channel Stack)

作者: Artech  来源: 博客园  发布时间: 2008-12-15 12:17  阅读: 6406 次  推荐: 0   原文链接   [收藏]  

3. 消息交换模式与Channel Shape

WCF完全采用基于消息的通信方式,对服务的消费最终通过一些列的消息交换实现。WCF应用在不同的场景中按照不同的模式进行消息交换。

3.1. 消息交换模式(MEP)

消息交换模式(Message Exchange Pattern:MEP)在SOA中是一个重要的概念。在W3C的文献中对MEP的官方定义是这样的:MEP定义了参与者进行消息交换的模板(原文是:a template that describes the message exchange between messaging participants.),这是一个很抽象的定义。实际上我们可以这样来理解MEP:消息交换模式(MEP)代表一系列的模板,它们定义了消息的发送者和接收者相互进行消息传输的次序。比较典型的消息交换模式包含以下三种:数据报模式(Datagram)、请求/回复模式(Request/Reply)以及双工模式(Duplex)。

数据报模式(Datagram

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

image

图3-9 数据报消息交换模式

数据报模式具有一些变形,比较典型的包括以下一些消息交换的方式:

  • 单目的地模式:一个消息的发送方将消息发送给单一的接收方
  • 多投模式:一个消息发送方将消息发送给一系列预定义的接收方
  • 广播模式:和多投模式相似,只是接收方的范围更加宽泛

数据报模式一般采用异步的消息发送方式,并不希望接收到对方的回复消息,在个别情况下甚至不关心消息能否正常地被接收。

请求/回复模式(Request/Reply

在这三种典型的消息交换模式中,请求/回复模式是使用得最多的一种模式。在这种模式下,消息发送方来将消息发送给接收方后会等待对方的回复。请求/回复模式的消息交换情况如下图所示。请求/回复模式一般采用同步的通信模式(尽管该模式也可以用于异步通信)。

image

图3-10 请求-回复消息交换模式

双工模式(Duplex

如果采用双工的消息交换模式,在进行消息交换过程中,任何一方都可以向对方发送消息,如图3-11所示。

image

图3-11 双工消息交换模式

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

由于消息的交换依赖于网络传递,所以消息交换模式与网络协议的支持是一个不得不考虑的。对于双工通信模式来说,它对于基于TCP协议的通信来说是完全没有问题,因为TCP协议本身就是全双工的网络通信协议。但是对于HTTP来说,它本身就是简单的基于请求/回复的网络协议,是不支持双工通信的。WCF通过WsDualHttpBinding实现了基于HTTP协议的双工通信,实际上是采用了两个HTTP通道实现的。

0
0

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻