博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信道与信道栈
阅读量:5870 次
发布时间:2019-06-19

本文共 1476 字,大约阅读时间需要 4 分钟。

信道与信道栈

在信道层,若干信道首尾相连组成一个管道,我们将其称为信道栈。WCF采用基于消息的通信手段,信道栈提供一个消息传输和处理的通道。关于信道栈处理消息的方式,我们可以通过自来水厂的净水流程做一个类比。

有一个为居民提供饮用水的自来水厂,它的任务就是抽取自然水源,进行必要的净化处理,最终输送到居民区。净化处理的流程可能是这样的:天然水源被汲取到一个蓄水池中先进行杂质的过滤(过滤池),被过滤后的水流到第二个池子中进行消毒处理(消毒池),被消毒处理的水流到第三个池子中进行水质软化处理(软化池),最终水通过自来水管道流到居民的家中。

WCF中信道栈就相当于一个自来水厂,而构成信道栈的一个个信道就相当于上面提到的过滤池、消毒池、软化池,以及自来水管道。唯一不同的是,自来水厂处理的是水,而信道栈处理的是消息(Message)。

这样设计的最大好处就是具有很强的可扩展性。水的净化流程具有多个环节,对于消息处理来说,不可能、也没有必要设计出一种万能信道完成所有的消息处理任务。我们更希望的方式是让一个信道专注于单一功能的实现,最终通过对信道有序、合理的组合去完成消息处理任务。

自来水厂旨在为居民提供饮用水,所以从水厂到居民住所之间的自来水管道是必需的,至于中间的过滤、消毒、软化等环节在水质良好的情况下可能就显得不那么必要了。对于WCF的信道栈来说,也有两种必需的信道,即传输信道(Transport Channel)和消息编码信道(Message Encoding Channel)。因为信道栈的最终任务总是实现对消息的网络传输,所以传输信道肯定是必需的;在传输之前需要对消息进行编码,而消息编码功能是通过消息编码信道实现的。所以最简单的信道栈可以只由如图3-1所示的传输信道和消息编码信道组成。

 

 

WCF采用基于消息的通信方式,所有功能,无论是与业务相关还是与业务无关的,都是通过消息交换来实现的。除了最基本的消息编码和传输之外,其他的一些功能也需要通过在消息交换过程中添加一些相应的消息处理操作来实现,典型的功能包括:

l  事务流转(Transaction Flowing):将从客户端开始的事务流转到服务端,从而将服务的执行纳入该事务。

l  安全传输(Transfer Security):保证数据包或消息的安全,避免被恶意篡改与窥视,同时解决客户端和服务身份认证问题。

l  可靠传输(Reliable Messaging):在网络环境稳定的情况下保证数据包或消息的可靠、有序传输。

这些特殊的功能也通过相应的信道来承载。说得专业一点,WCF是遵循WS-*标准的,WS-*通过一系列的协议制定了一套业界普遍遵循的Web 服务标准,使得不同厂商、不同平台之间的互操作成为可能。WCF对最新的WS-*提供了支持,随着WS-*的逐步完善,WCF也会与之保持同步。

对绝大部分WS-*协议的支持都是通过在信道栈中添加相应的信道实现的所以我们把这样的信道称为协议信道(Protocol Channel)。必需的传输信道和消息编码信道,加上可选的协议信道,组成了一个更加完整的、功能更加强劲的信道栈。如图3-2所示,在传输信道和消息编码信道之上,基于WS-Security的信道确保了消息的传输安全;基于WS-RMWS-Reliable Messaging)的信道实现了消息的可靠传输;基于WS-ATWS-Atomic Transaction)的信道实现了分布式的事务支持。

 

 

 

 

本文节选自《WCF全面解析(上下册)》一书

蒋金楠 

图书详细信息:

转载地址:http://rjxnx.baihongyu.com/

你可能感兴趣的文章
Leetcode日记8
查看>>
Java多线程技能
查看>>
从 Project Professional 中登录 Project Server
查看>>
单链表的一些经典面试题
查看>>
frameset iframe frame之间的区别
查看>>
Python转义字符
查看>>
Kubernetes平台中日志收集
查看>>
ElasticSearch学习(8)-Restful接口查询操作
查看>>
URL—base64加密
查看>>
打包审核的那些个坑 (含swift)
查看>>
电子秤示数读取方案
查看>>
我的友情链接
查看>>
Nginx+Keepalived搭建高可用负载均衡集群
查看>>
js获取当前物理地址
查看>>
一个例子说明java局部代码块、静态代码块、构造代码块区别
查看>>
LVS的三种模式区别详解
查看>>
Nginx(1)-nginx的编译安装
查看>>
Unity3d iOS 如何添加Admob
查看>>
Backtrack5 下WEB模糊测试
查看>>
活动目录之占用操作主机实例分析
查看>>