架构设计模式之管道——过滤器模式

管道-过滤器模式的体系结构是面向数据流的软件体系结构。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。人们能够将编译系统看做一系列过滤器的链接体,按照管道-过滤器的体系结构进行设计。此外,这种体系结构在其它一些领域也有普遍的应用。所以它成为软件工程和软件开发中的一个突出的研究领域。架构

在管道,过滤器架构模式中,每一个构件都有一组输入,输出,构件读取输入的数据流,通过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算。一般,将这里的构件称为过滤器,其中的链接器就像是数据流传输的管道,将一个过滤器的输出传送到另外一过滤器的输入。管道,过滤器输出的正确性并不依赖于过滤器进行增量计算过程的顺序。性能

管道-过滤器的组成优化

1 过滤器加密

过滤器按照对流经它的数据操做的不一样,可分为3类过滤器:输入过滤器,处理过滤器和输出过滤器。下面将对这三类过滤器进行介绍。设计

(1)输入过滤器开发

输入过滤器处在问题所在的外部世界与软件系统的边界处,是系统数据流的源点。它负责接收外界信息并转化为系统所需的数据流。编译

(2)处理过滤器架构模式

处理过滤器是系统内变换数据流的部件,它有一个入口和一个出口,数据经入口流入,通过处理过滤器内部处理以后从出口流出。原理

(3)输出过滤器软件

从创建完备的,首尾一致的可重用的软件部件组的角度出发,正如输入过滤器是系统数据流的起点,那么输出过滤器是数据流的终点。

过滤器的实现还须知足如下三条基本原理:

随后的处理单元从过滤器中拉出输出数据;

前面的处理单元把新的输入数据压入过滤器;

过滤器以循环工做的方式,从流水线中拉出其输入数据而且将其输出数据压入流水线。过滤器按照以上三种状况可分为两类:主动过滤器和被动过滤器。知足前两种状况的过滤器称为被动过滤器,知足最后一种状况的过滤器称为主动过滤器。

2 管道

管道做为过滤器之间数据流动的通道的软件部件,它的主要功能是链接各个过滤器,充当过滤器之间数据流的通道。管道具备数据缓冲以及提升过滤器之间的并行性操做的做用。管道由数据缓冲区,向数据缓冲区读和写数据,判断管道为空或已满等操做定义组成

 

管道/过滤器模式的优势以下。

(l)体现了各功能模块的“黑盘”特性及高内聚、低耦合的特色。

(2)能够将整个系统的输入,输出行为当作是多个过滤器行为的简单合成。

(3)支持软件功能模块的重用。

(4)便于系统维护:新的过滤器能够添加到现有系统中来,旧的能够由改进的过滤器替换。

(5)支持某些特定的分析,如吞吐量计算、死锁检测等。

(6)支持并行操做,每一个过滤器能够做为一个单独的任务完成。

管道,过漶器模式的缺点以下。

(1)一般致使系统处理过程的成批操做。

(2)须要设计者协调两个相对独立但又存在关系的数据流。

(3)可能须要每一个过滤器本身完成数据解析和合成工做(如加密和解密),从而致使系统性能降低,并增长了过滤器具体实现的复杂性。