本文介绍了软件体系架构产生的背景和架构模式的基本理论。重点介绍管道与过滤器体系架构模式的结构,实现,优缺点等,然后以j2ee的servlet filter为例进行剖析它是怎样应用该架构模式的,最后简单阐述了在其它j2ee应用中(jboss和axis)的实践。
软件体系架构
1、软件体系架构产生背景
在经历60年代的软件危机之后,使人们开始重视软件工程的研究。来自不同应用领域的软件专家总结了大量的有价值的知识。 当初,人们把软件设计的重点放在数据结构和算法的选择上,如knuth提出了数据结构+算法=程序。 但是随着软件系统规模越来越大、越来越复杂,使软件系统的架构越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,软件体系架构比起对程序的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系架构的重要性,并认为对软件体系架构系统、深入的研究将会成为提高软件生产效率和解决软件危机的最有希望的途径。 这时对软件体系架构的研究如雨后春笋般,出现了百家争鸣的现象,如rational公司提出了"以架构为中心"的统一软件开发过程(rup)。
2、软件体系架构模式
软件设计的一个核心问题是能否使用重复的体系架构,即能否达到体系架构级的软件重用。也就是说,能否在不同的软件系统中,使用同一体系架构。基于这个目的,许多学者们开始研究和实践软件体系架构的模式问题。在<pattern-oriented software architecture (面向模式的软件体系架构) >中首次提出了8种体系结构模式: 层(layers)、管道和过滤器(pipes and filters) 、黑板(black board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。
j2ee体系架构
目前,j2ee技术已经成为企业级应用的首选平台,基于j2ee技术构建的软件系统越来越多。j2ee代表着先进的软件体系架构思想,许多软件体系架构模式在j2ee中均被广泛应用,从本文起陆续介绍各架构模式在j2ee中的应用。
管道与过滤器
1、概述
管道和过滤器(pipes and filters)体系架构模式是为处理数据流的系统提供的一种模式。它是由过滤器和管道组成的.每个处理步骤都被封装在一个过滤器组件中,数据通过相邻过滤器之间的管道进行传输。每个过滤器可以单独修改,功能单一,并且它们之间的顺序可以进行配置。下图是管道/过滤器模式的示意图。一个典型的管道/过滤器体系结构的例子是以unix shell编写的程序。unix既提供一种符号,以连接各组成部分(unix的进程),又提供某种进程运行时机制以实现管道。另一个著名的例子是传统的编译器。传统的编译器一直被认为是一种管道系统,在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。