《WCF的绑定模型》博文系列汇总[共6篇]

从整个基础构架的层次结构上讲,WCF可以分成两个部分:服务模型层(Service Mode Layer)和信道层(Channel Layer)。服务模型层建立在信道层之上,提供了一个统一的、可扩展的编程模型。信道层则通过绑定(Binding)建创的信道栈为消息通信提供了一个传输、处理的通道。

[第1篇] Binding模型简介

对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,同时也是最为复杂、最难实现的问题。在过去的若干年中,
微软先后推出了一系列广受欢迎的通信技术, 比如DCOM、Enterprise Service、.NET Remoting、XML Web
Service、MSMQ等等。这些技术提供了各自的编程模型,是开发人员从繁琐的完全基于通信的编程中解脱出来,使之仅仅需要关注具体的业务逻辑。
WCF是所有的这些通信技术集大成者,它充分地整合了所有这些使用于不同领域、不同场景的通信技术,提供了一个统一的编程模型。

无论从功能上讲,还是从WCF的整个基础构架的层次结构上讲,WCF可以分成两个不部分:编程模型通信实现。编程模型通过WCF服务模型层(service
mode layer)提供,而信道层 (channel layer)
则提供了具体的通信的实现。服务模型层建立在信道层之上,对于一般的WCF开发人员来讲,他们仅仅会接触到服务模型层,信道层则是被屏蔽掉的。而绑定是整个信道层的缔造者。

[第2篇] 信道与信道栈(Channel and Channel Stack)

WCF采用基于消息交换的通信方式,而绑定则实现了所有的通信细节。绑定通过创建信道栈实现了消息的编码与传输,以及对WS-*协议的实现。WCF绑定模型涉及多种类型的组件,比如信道、信道监听器、信道工厂等等。从功能上讲,这些对象都是为通信服务的,我们可以把它们称为通信对象(Communication

Object)。对于这些通信对象来说,在通信不同的阶段,它们往往具有不同的状态;从整个通信的生命周期来看,在不同阶段过渡的过程中,它们具有一些相似的状态转换方式……

[第3篇] 信道监听器(Channel Listener)

信道管理器是信道的创建者,一般来说信道栈的中每个信道对应着一个信道管理器。基于不同的消息处理的功能,将我们需要将相应的信道按照一定的顺序能组织起来构成一个信道栈,由于信道本身是由信道管理器创建的,所以信道对应的信道管理器也构成一个信道管理器栈,栈中信道管理器的顺序决定由它所创建信道的顺序。

对于WCF的信道层来说,信道管理器在服务端和客户端扮演着不同的角色,服务端的信道管理器在于监听来自客户端的请求,而客户端的信道仅仅是单纯的创建用于消息发送的信道。因此,客户端的消息管理器又称为信道监听器(Channel
Listener),客户端的信道管理器则成为信道工厂(channel factory)。
在WCF中,所有的信道管理器,不管是位于服务端的信道监听器还是客户端的信道工厂,都继承自一个基类:.ChannelManagerBase

其实我们完全可以把一个WCF应用开成是一个普通的基于监听-请求模式的网络应用,服务端将监听器绑定到一个或一组URI上进行网络监听,一旦成功监听到来自客户端的请求,则接收、处理该请求,如需回复则发送回复回客户端。在整个过程中,监听器处于核心的地位,而WCF中的信道监听器就起着这样的作用。

[第4篇] 信道工厂(Channel Factory)

由于信道管理器在客户端和服务端所起的不同作用,分为信道监听器和信道工厂。和服务端的信道监听其相比,处于客户端的信道工厂显得简单。从名称就可以看得出来,信道工厂的作用就是单纯的创建用于消息发送的信道。

[第5篇] 绑定元素(Binding Element)

在上面的内容中,先后介绍了信道、信道管理器、信道监听器和信道工厂。从对象的创建来讲,信道管理器是信道的创建者。说的再具体点,客户端的信道通过信道工厂创建,服务端的信道通过信道监听器创建。但是信道工厂和信道监听器又是如果被创建出来的呢?

我们在一开始就已经说过,作为终结点三要素的绑定对象实现了所有的通信细节,并且通过创建信道栈实现了消息的传递。从这一点来说,绑定对象无疑是信道层所有通信对象的最终缔造者,所以信道工厂和信道监听器最终的创建都是靠绑定对象实现的。关于这个创建过程又和另一个重要的对象密切相关,那就是绑定元素。

绑定元素,顾名思义就是构成一个绑定对象的元素。绑定对象最根本的目的就是创建信道栈,借此实现对消息的传输、编码和基于消息交换的其他功能,比如安全、可靠传输、事务流转等等。组成信道栈的单个信道对象基于对某项单一功能的实现,在不同环境中,我们需要根据具体的需要创建相应的信道,并根据一定的顺序把这些信道组成一个完整的信道栈。对于绑定对象来说,如何实现这种灵活、自由的信道常创建方式,这得益于基于绑定元素的设计模式。

[第6篇] 从绑定元素认识系统预定义绑定

由于绑定对象由一系列有序的绑定元素组成,绑定元素最终决定着信道栈中信道的组成,而信道的组成最终又决定了信道栈对消息进行处理的方式和能力,所有要确定绑定的特性和能力,我们可以通过查看其绑定元素的构成来一窥究竟。

作者:蒋金楠
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文链接

时间: 2024-10-27 00:50:13

《WCF的绑定模型》博文系列汇总[共6篇]的相关文章

《我的WCF之旅》博文系列汇总

WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Service架构上的一个全新的通信平台.你可以把它看成是.NET平台上的新一代的Web Service.WCF为我们提供了安全.可靠的的消息通信,也为我们提供了更好的可互操作性是的我们可以和其他的平台进行"交流". 微软斥巨资打造WCF,在我们看来主要出于下面两个目的:实现其对现有的分布式技术的整合以及顺应SOA的浪潮.在WCF之前,微软已经为了提供了一套完整的基于分布式的技术和产品,这些技术和产品使我们构建一个基于于分

《WCF后续之旅》博文系列总结[共17篇]

<我的WCF之旅>系列自开篇以来,得到了园子里很多朋友的厚爱,并荣登了博客园2007年度系列博文Top 10.由于工作原因,沉寂了一阵,两个月前开始WCF新的旅程.如果说<我的WCF之旅>主要是对WCF基本原理概括性介绍,而对于这个新的系列,我将和大家分享我对WCF的一些实现机制.设计原理的理解,以及我在实际的项目开发中的一些实践经验(比如在后续的一些文章中,我将介绍通过WCF Extension实现一些在真正的分布式项目开发中很有现实意义的功能). [第1篇] WCF是如何通过B

《Enterprise Library深入解析与灵活应用》博文系列汇总

Enterprise Library是微软P&P部门开发的众多Open source框架中的一个,最新的版本已经出到了4.1.由于接触Enterprise Library已经有很长的一段时间,在实际的项目中使用的频率也很高.对此有了一些积累,希望通过这个新的系列和广大网友一起分享和交流.本系列假设读者已经对Enterprise Library有一定的了解,故而不会对各个Application Block的基本原理和编程模型进行介绍,而把侧重点放在Enterprise Library深层次的实现原

与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]

前一阵子写了不少关于代码生成相关的文章,介绍了一些如何通过VS自动生成代码的解决方案,比如CodeDOM.T4以及ASP.NET的BuildProvider等.现在将它们作一个汇总,给广大读者作一个参考. [第1篇] 通过CodeDOM定义生成代码的结构 我不知道大家对CodeDOM的代码生成机制是否熟悉,但是有一点可以确定:如果你使用过Visual Studio,你就应该体验过它带给我们在编程上的便利.随便列举三种典型的代码生成的场景:在创建强类型DataSet的时候,VS会自动根据Schem

WCF 4.0新特性汇总[共12篇]

一.简化开发体验 默认终结点 默认绑定和行为配置 标准终结点与无(.SVC)文件服务激活 二.路由服务 路由服务[原理篇] 路由服务[实例篇] 三.服务发现 WCF-Discovery的协议基础:WS-Discovery 服务如何能被"发现" 客户端如何能够"探测"到可用的服务? 实例演示:如何利用服务发现机制实现服务的"动态"调用? 让服务自动发送上/下线通知[原理篇] 让服务自动发送上/下线通知[实例篇] 如何利用"发现代理&quo

《深入理解C# 3.x的新特性》博文系列汇总

较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁.优雅的程序.不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显"残缺"的Code变得"完整",实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同.为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章.但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?

WCF的Binding模型之五:绑定元素(Binding Element)

在上面的内容中,先后介绍了信道.信道管理器.信道监听器和信道工厂.从对象的创建来讲,信道管理器是信道的创建者.说的再具体点,客户端的信道通过信道工厂创建,服务端的信道通过信道监听器创建.但是信道工厂和信道监听器又是如果被创建出来的呢? 我们在一开始就已经说过,作为终结点三要素的绑定对象实现了所有的通信细节,并且通过创建信道栈实现了消息的传递.从这一点来说,绑定对象无疑是信道层所有通信对象的最终缔造者,所以信道工厂和信道监听器最终的创建都是靠绑定对象实现的.关于这个创建过程又和另一个重要的对象密切

艾伟:[WCF的Binding模型]之五:绑定元素(Binding Element)

在上面的内容中,先后介绍了信道.信道管理器.信道监听器和信道工厂.从对象的创建来讲,信道管理器是信道的创建者.说的再具体点,客户端的信道通过信道工厂创建,服务端的信道通过信道监听器创建.但是信道工厂和信道监听器又是如果被创建出来的呢? 我们在一开始就已经说过,作为终结点三要素的绑定对象实现了所有的通信细节,并且通过创建信道栈实现了消息的传递.从这一点来说,绑定对象无疑是信道层所有通信对象的最终缔造者,所以信道工厂和信道监听器最终的创建都是靠绑定对象实现的.关于这个创建过程又和另一个重要的对象密切

WCF中并发(Concurrency)与限流(Throttling)体系深入解析系列[共7篇]

服务(Service)的本质就是提供服务消费者期望的某种功能,服务的价值体现在两个方面:服务本身的质量和寄宿服务的平台应付消费者的数量,并发(Concurrency)的关注的是第二个要素.WCF服务寄宿于资源有限的环境中,要实现服务效用的最大化,需要考虑如何利用现有的资源实现最大的吞吐量(Throughput).提高吞吐量就某个寄宿的服务实例(Service Instance)来说,一个重要的途径就是让它能够同时处理来自各个客户端(服务代理)的并发访问.WCF实现了一套完整的并发控制体系,为你提