• 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: 系统中至少有一个主动过滤器 (可以来自外部环境,如用户输入)
    • ~~~~~~~~~~~一些图片~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    管道-过滤器风格的优点

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

    –      支持软件复用:

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

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

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

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

    管道-过滤器风格的优点

  • 相关阅读:
    Pure播放器
    WPF绑定并转换
    WPF的DataTrigger使用
    NancyFx框架之检测任务管理器
    Asp.Net MVC 5使用Identity之简单的注册和登陆
    AspNetCore使用MySQL
    Head First 设计模式之适配器模式与外观模式
    Head First 设计模式之命令模式(CommandPattern)
    Head First 设计模式之工厂模式(Factory Pattern)
    .NET设计规范————类型设计规范
  • 原文地址:https://www.cnblogs.com/huhaibo/p/3408320.html
Copyright © 2020-2023  润新知