一个典型的管道过滤器体系结构的例子是以Unix shell编写的程序.Unix既提供一种符号,以连接各组成部分(Unix的进程),又提供某种进程运行时机制以实现管道.另一个例子是传统的编译器.传统的编译器一直被认为是一种管道系统,在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入.
在管道过滤器软件体系结构中,每个模块都有一组输入和一组输出.每个模块从它的输入端接收输入数据流,在其内部经过处理后,按照标准的顺序,将结果数据流送到输出端,以达到传递一组完整的计算结果实例的目的.通常情况下,可以通过对输入数据流进行局部变换,并采用渐进式计算方法,在未处理完所有输入数据以前,就可以产生部分计算结果,并将其送到输出端口(类似于流水线结构).因此,称这种模块为"过滤器".在这种结构中,各模块之间的连接器充当了数据流的导管,将一个过滤器的输出传到下一个过滤器的输入端.所以,这种连接器称为"管道".
管道过滤器体系结构具有许多很好的特点:(1)使得软构件具有良好的隐蔽性和高内聚、低祸合的特点;(2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;(3)支持软件重用.重要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;(4)系统维护和增强系统性能简单.新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;(5)允许对一些如吞吐量、死锁等属性的分析;(6)支持并行执行.每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行;
但是,这样的系统也存在着若干不利因素:(1)通常导致进程成为批处理的结构.这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换.(2)不适合处理交互的应用.当需要增量地显示改变时,这个问题尤为严重.(3)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样可以导致了系统性能下降,并增加了编写管道过滤器的复杂性.综合分析现有管道一过滤器体系结构的研究成果,可以发现管道一过滤器体系结构没有给出管道和过滤器如何组装以实现系统的方法,也没有给出管道过滤器通过管道进行数据传输的方式,而且对过滤器和管道各自内部结构没有清晰的描述,因此可以认为管道一过滤器体系结构没有深入对管道一过滤器本质进行揭示.
更多管道过滤器相关内容来源于:http:///gdglq/
北京通用管道过滤器配件信誉保证是泊头市通用波纹管制造有限公司的主要产品,我们的产品负责人是李宏文,我们的地址是河北省泊头市西环工业泊富路八里庄桥西,期待与您的合作!