[笔记]软件体系结构(3)--管道与过滤器

看了一整晚,不甚理解管道/过滤器。常见的案例Linux命令管道是比较好理解的,但加之混乱的主动/被动的动态概念,就不太好理解了。暂先整理笔记,后面再回顾。


这是看的第2类体系结构,还是有所收获:大致可抽象出一些常见设计的范式

1、体系结构现过程关键点:拆、定义接口/格式、合、出错处理

2、优点关注:重用度 考虑到一般变更的设计是优秀系统深化的一个主要助推器”


【概述】

管道和过滤器(Pipes and Filters)为处理数据流的系统提供了一种结构。每个处理步骤封装在一个过滤器组件中,数据通过相邻过滤器之间的管道传输。重组过滤器可以建立相关系统族。

【细节】
例子 -- Java语言的解析过程(词法分析,语法分析,语义分析,中间代码生成,中间代码优化)
语境 -- 处理数据流
问题 -- 存在不同的输入数据源;想要达到未来可灵活重新排列步骤,需要提前做好规划;不相连的处理步骤不共享信息etc
解决方案 -- 将系统任务分成几个顺序的处理步骤。
结构 --
1、随后的流水线单元从过滤器中拉出输出数据(被动过滤器)
2、前面的流水线单元把新的输入数据压入过滤器(被动过滤器)
3、最常用的,过滤器以循环方式工作,从流水线中拉出其输入数据并且将其输出数据压入流水线(主动过滤器)

过滤器,职责:获得输入数据;在其输入数据上执行1个函数;供给输出数据
管道表示过滤器之间的连接,职责:转化数据,缓冲数据,同步主动邻居

动态特性 -- 主动被动过滤器之区分(暂搞不懂)
实现 -- 
1、为把系统任务分成一系列处理阶段
2、定义沿每个管道传输的数据格式
3、决定如何实现每个管道连接
4、设计和实现过滤器
5、设计出错处理
6、建立处理流水线

已知使用:Unix流水线任务:程序编译、文档创建
效果 --
优点:不一定需要中间文件、过滤器交换/重组灵活性、重用、快速原型、并行处理效率
不足:共享状态信息昂贵/不灵活、并行处理效率未必高、数据转换额外开销、错误处理


你可能感兴趣的:(架构)