software Architecture(3)

1、  数据流风格直观理解: 数据到达即被激活,无数据时不工作。

2、  数据流风格的特征:

数据的可用性决定着处理<计算单元>是否执行;

系统结构:数据在各处理之间的有序移动;

在纯数据流系统中,处理之间除了数据交换,没有任何其他的交互。

3、  数据流风格的基本构件:

基本构件:数据处理

构件接口:输入端口、输出端口,从输入端口读取数据,向输出端口写入数据

计算模型:从输入端口读数,经过计算处理,然后写出输出端口。

4、  数据流风格的连接件:数据流

(单向、通常是异步、有缓冲)

  接口:reader和writer

 计算模型:把数据从一个处理的输出端口传送到另一个处理的输入端口

5、  数据流风格的拓扑结构:任意拓扑结构的图

一般来说,数据的流向是无序的,我们主要关注近似线性的数据流或在限度内的循环数据流。

6、  三种典型的数据流风格:批处理、管道过滤器、过程控制

7、  批处理风格基本定义:每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。

8、  批处理风格基本构成:基本构件:独立的应用程序

连接件:某种类型的媒介

拓扑结构:连接件定义了相应的数据流图,表达拓扑结构

每一步骤必须在前一步骤完成结束后方能开始。

9、  管道与过滤器(基本定义)

数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等),把系统分解为几个序贯的处理步骤,这些步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入,每个处理步骤由一个过滤器构件实现,处理步骤之间的数据传输由管道负责。每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生数据流并写入管道内。

10、管道过滤器的基本构成:

 构件:过滤器(处理数据流)一个过滤器封装了一个处理步骤,数据源点和数据终点可以看作是特殊的过滤器。

连接件:管道(连接一个源和一个目的过滤器) 转发数据流,数据可能是ASCII字符形成的流

拓扑结构:连接器定义了数据流图,形成拓扑结构

11、过滤器(目标是将源数据变换成目标数据,从数据流到数据流的变化):

通过计算和增加信息来丰富数据,通过浓缩和删减来精炼数据,通过改变数据表现形式来转化数据,将一个数据流分解为多个数据流,将多个数据流合并为一个数据流。
12、过滤器读取与处理数据流的方式:递增的读取和消费数据流(数据到来时便被处理,不是收集然后处理)

13、过滤器的其他特征:无上下文信息,不保留状态,对其他过滤器无任何了解

14、过滤器的状态:停止状态、处理状态、等待状态

15、管道:其作用是在过滤器之间传送数据。(单向流,可能具有缓冲区,数据缓冲区可以是文件、数组、字典、树等collection类型,管道形成传输图,管道的先后顺序不影响输出的结果)

不同的管道中流动的数据流,可能具有不用的数据格式。(因为数据在流经过每一个过滤器进行了丰富、精炼、转换、融合、分解等操作,因而产生了变化)

从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。

管道的分类——————————

管道的连接过滤器的方式~~~~~

数据流的分类:推式与拉式

  • Question: what is the force that make data flow? (是什么力量推动数据在管道中流动?)
  • Three choice, all with force emanating from filters:

–      Push: data source pushes data in downstream direction (推式:前面的过滤器把新产生的数据推入管道)

–      Pull: data sink pulls data from upstream direction (拉式:随后的过滤器从管道中拉出所需数据)

–      Push/pull: a filter is actively pulling from upstream, computing, and pushing downstream (推拉式:过滤器以循环的方式,从管道中拉出其输入数据,并将其处理产生的数据压入后续管道)

过滤器的分类:主动与被动

  • Active filter: The filter is an active process or thread that performs a loop, pulling its input from and pushing its output down the pipeline; (主动过滤器:具有pull/push类型的过滤器)
  • Passive filter (被动过滤器)

–      Pull Strategy (拉式策略): The filter is a passive object that is driven by the subsequent pipeline element that pulls output data from the filter;

–      Push Strategy (推式策略): The filter is a passive object that is driven by the previous pipeline element that pushes input data into the filter.

  • Attention: 系统中至少有一个主动过滤器 (可以来自外部环境,如用户输入)
  • ~~~~~~~~~~~一些图片~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

管道-过滤器风格的优点

  • 使得系统中的构件具有良好的隐蔽性和高内聚、低耦合的特点;

–      支持软件复用:

  • 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
  • 只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;

–      系统维护和增强系统性能简单:

  • 新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉;
  • 允许对一些如吞吐量、死锁等属性的分析;
  • 支持并行执行:

–      每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。

管道-过滤器风格的优点

原文地址:https://www.cnblogs.com/huhaibo/p/3408320.html