WCF专题系列(8):深度通道编程模型Part 1—设计篇

引言

从本质上说,WCF是一个通信服务框架,它允许我们使用不同的传输 协议,使用不同的消息编码形式,跟不同的WS-*系列规范交互,而所有这些细节 都是由通道堆栈来处理的。为了简化这些处理,在WCF中提供了两种模型,一是 针对开发者的应用程序编程模型;二是用来通信的通道模型,这样对于开发者来 说,只要了解应用程序编程模型就足够了,而不会涉及到通道模型,然而,对于 通道模型进行必要的学习,可以让我们真正理解WCF中“通信”概念 ,了解WCF的 整个架构体系,从而构建出更加健壮的WCF服务或者对WCF框架进行 扩展。在本文中,我们将进行深度了解WCF中的通道模型是如何设计的。

通道模型概述

在WCF中,提供了一系列的接口和其它类型模型,它们为消息的 发送和接收提供了一个底层的编程模型,该模型称之为WCF通道模型。在通道模 型中,一个很重要的概念是通道堆栈,它是具有一个或多个消息处理通道的分层 的通信堆栈,堆栈中放置了各种类型的通道,用来对象进行处理,如在通道堆栈 的最底层放置了传输通道,它负责使通道堆栈适应基础传输,如图1所示:


图1

在通道堆栈中,不仅仅提供消息的传输方式,还提供了其 它诸如对消息的内容或者消息头进行处理的功能,这些功能同样是以通道的方式 放置在通道堆栈中,甚至于我们可以编写自己的通道,加入到通道堆栈中。

消息在通道堆栈中传输时,将作为Message对象流过通信堆栈,如传输通 道负责在发送方和接收方之间转换消息,之后消息将通过传输通道继续往上流, 依次经过通道堆栈中的各个通道,这些通道各自负责提供一种通信功能,如在消 息头中添加信息,对消息的正文进行加密等等。

通道对象模型

通道对 象模型是实现通道、通道侦听器和通道工厂所必需的一组核心接口。还提供一些 基类以辅助自定义实现。可以看到通道模型中最重要的有三组接口:通道、通道 侦听器和通道工厂。每个通道均实现一个或多个接口,称为通道形状接口或通道 形状;通道侦听器负责侦听传入消息,即在消息的接收端,然后通过由通道侦听 器创建的通道将这些消息传送到上面的层;通道工厂负责创建通道用于发送消息 ,即在消息的发送方,并在通道工厂关闭时,关闭通道工厂创建的所有通道。

在通道模型中,最重要的一个接口是ICommunicationObject,它定义了 所有通信对象实现的基本状态机的核心接口,自定义通道通信对象可以直接实现 ICommunicationObject,如图2所示:


图2

时间: 2024-09-17 04:21:01

WCF专题系列(8):深度通道编程模型Part 1—设计篇的相关文章

WCF专题系列(1):深入WCF寻址Part 1

概述 众所周知,WCF服务的所有通信都是通过服务的终结点发生的,每个 服务终结点都包含一个地址Address.一个绑定Binding 和一个契约Contract. 契约指定可用的操作,绑定指定如何与服务进行通信,而地址指定查找服务的位 置,即非常经典的"ABC".WCF用多种不同的通信协议为公开服务终 结点和与其通信提供了灵活的模式,在WCF专题系列的第一部分,我将围绕终结 点的寻址细节展开讨论,再此之前,我们先看一下WCF的编程模型,如图1所示: 图1 Web服务寻址规范 在 WCF

WCF专题系列(7):消息如何传递之绑定Part 2

概述 每个服务终结点都包含一个地址Address.一个绑定Binding 和一个 契约Contract.契约指定可用的操作,绑定指定如何与服务进行通信,而地址指 定查找服务的位置,在WCF专题系列前5篇中,深入了解了WCF中寻址的细节.本 文为消息如何传递之绑定第二部分,将详细介绍WCF内置的各种绑定元素,绑定 元素之间的顺序以及如何创建一个自定义的绑定元素. 在WCF专题系列( 6):消息如何传递之绑定Part 1一文中,我提到绑定由绑定元素组成,每个绑 定元素用来描述终结点与客户端通信方式中

WCF专题系列(4):深入WCF寻址Part 4—自定义消息筛选器

概述 在WCF专题系列(3):深入WCF寻址Part 3-消息过滤引擎一文 中,详细介绍了WCF中的消息筛选引擎,包括消息筛选器和筛选器表,每个 EndpointDispatcher都包含了两个消息筛选器,默认的地址过滤器是 EndpointAddressMessageFilter,默认的契约过滤器是ActionMessageFilter, 这些是可以通过Behavior来改变的.本文我们将学习如何创建一个自定义的消息 过滤器,并通过自定义Behavior来改变EndpointDispatche

WCF专题系列(2):深入WCF寻址Part 2—自定义寻址报头

在WCF专题系列(1):深入WCF寻址Part1一文中,我们对Web服务寻址规范做 了一些认识,了解了终结点引用和消息信息报头两种结构,该规范在Web服务中 的地位举足轻重,后续我们会经常提到该规范.在本文中,我们将继续深入WCF 寻址的内容,包括元数据中的终结点地址,自定义寻址标头等相关信息. 终结点地址定义 了解了Web服务寻址规范,再回到WCF,在WCF中,终 结点地址是由EndpointAddress类来表示的,它其中很重要的几个部分是:一个 表示服务地址的统一资源定位符 (URI),一

WCF专题系列(6):消息如何传递之绑定Part 1

什么是绑定 从本质上说,WCF是一个通信服务框架,它允许我们使用不同 的传输协议(如Http.Https.TCP.P2P.IPC和MSMQ等),使用不同的消息编码 形式(文本.二进制和MTOM),跟不同的WS-*系列规范(如WS-Security.WS- Atomic Transaction等)交互.所有这些细节都是由通道堆栈来处理的,看一下 Aaron Skonnard给出的这幅图: 图1 最底层传输组件读入消息,消息编码器将传入字节读取为 逻辑消息对象,之后消息通过通道堆栈中的各个消息,它们

WCF专题系列(5):深入WCF寻址Part 5—逻辑地址和物理地址

概述 在WCF中,每个服务终结点都与两个地址相关联,一个逻辑地址和一 个物理地址,逻辑地址就是SOAP消息的目标地址,即前面不止一次提到的 "To"地址,而物理地址是WCF侦听器真正监听的地址.在WCF中,逻 辑地址称之为终结点地址Endpoint Address,而物理地址则称之为监听地址 ListenUri. 两种地址 WCF中,物理地址负责使用特定的传输协议在特 定的位置接收传入的消息,除非特别指定,否则逻辑地址将被用来做物理地址, 换句话说,在以前我们对于终结点所配置的Endp

WCF专题系列(3):深入WCF寻址Part 3—消息过滤引擎

概述 通过前面两篇的介绍,对Web服务寻址规范以及在WCF开发中终结点地 址有了深入的认识.本文我们继续深入WCF寻址第三部分内容,当消息传入时, 如何来确定匹配的终结点,就是我们本文要讲到的消息筛选引擎.在WCF中,消 息筛选器引擎包括两个重要的组成部分:筛选器和筛选器表. 认识消息 筛选器 在WCF中当有消息传入时,它使用消息筛选器来确定匹配的终结点,每 个终结点实际上关联着两个筛选器:一个地址筛选器和一个契约筛选器.地址筛 选器确定传入消息是否匹配终结点的"To"地址和任何必需的

MapReduce 编程模型概述

MapReduce 编程模型给出了其分布式编程方法,共分 5 个步骤: 1) 迭代(iteration).遍历输入数据, 并将之解析成 key/value 对. 2) 将输入 key/value 对映射(map) 成另外一些 key/value 对. 3) 依据 key 对中间数据进行分组(grouping). 4) 以组为单位对数据进行归约(reduce). 5) 迭代. 将最终产生的 key/value 对保存到输出文件中. MapReduce 将计算过程分解成以上 5 个步骤带来的最大好处

WCF分布式开发步步为赢系列的(4):WCF服务可靠性传输配置与编程开发

今天继续WCF分布式开发步步为赢系列的第4节:WCF服务可靠性传输配置与编程开发.这个章节,我们要介绍什么是WCF服务的可靠性传输,随便介绍网络协议的概念,Web Service为什么不支持可靠性传出,具体的WCF绑定协议和可靠性的关系,实现可靠性传输有什么方式,以及配置和开发的详细实现代码分析部分.[1]可靠性传输[2]配置方式实现可靠性传输[3]编程方式实现可靠性传输[4]编程实现必备有序传递[5]结果分析和总结. 下面进入正式的内容: [1]可靠性传输: [1.0]网络协议基础知识: 这里