20世纪70年代初,DougMcIlory等人首次提出了管道/过滤器的概念并将其应用于UNIX最初版本当中。1996年,Frank Buschmann、Mary Shwa和David Garlany等人先后提出了管道/过滤器软件体系结构风格。
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件首先读取输入的数据流,经过内部处理,产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。过滤器与过滤器之间无需进行状态信息的交互,各过滤器不受其他任何过滤器的影响,无需知道它的输入管道和输出管道的存在,仅需要对输入管道和输入数据进行限制,就能保证在管道的输出数据流有相应的内容。
图9-1 管道/过滤器风格的软件体系结构
在这种风格中构件被称为过滤器,连接件就像用于数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。此风格特别重要的地方在于过滤器必须是独立的实体,不能与其他的过滤器共享数据,而且过滤器不知道它上游和下游的标识。
管道/过滤器风格的优点在于:(www.xing528.com)
(1)将整个系统的输入和输出行为理解为单个过滤器行为的叠加与组合,可以将问题分解,化繁为简。
(2)任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相连接。每个过滤器都有自己独立的输入/输出接口,如果过滤器间传输的数据遵守其规约,只要用管道将它们连接就可以正常工作。
(3)系统易于维护和升级。在管道/过滤器风格的软件体系结构中,只要遵守输入和输出数据的规约,任何一个过滤器都可以被另一个新的过滤器代替,也可为增强程序功能而添加新的过滤器。
(4)支持并发执行。每个过滤器作为一个单独的执行任务,可以与其他过滤器并发执行。过滤器的执行是独立的,不依赖于其他过滤器。
注意,管道/过滤器风格虽然不是按面向对象方法建立的,但是完全可以与面向对象思想结合起来,优化原有的体系结构。例如,可以先按照管道/过滤器风格建立系统的体系结构,然后应用面向对象的方法设计和实现具体的过滤器及管道。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。