`
Goleo8
  • 浏览: 10001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

1.0管道和过滤器模式

阅读更多
——管道和过滤器体系结构背后的原理是对复杂功能计算的组织以及对关注点的分离——主要目的就是分离关注点

组织结构——管道和过滤器的职能

一个过滤器从它的输入读取数据流,处理这些数据,然后产生数据流到它的输出
管道的实现主要有两种可能:管道可能只起到连接过滤器的作用(如消息调用)或者可能是独立的组件(例如数据知识库或传感器)。管道的唯一责任就是在过滤器之间传输数据,它最后通过把数据从发送者产生的格式转化为接受者要求的格式来实现这个责任。
管道和过滤器体系结构框架基本上是生产者—消费者结构的一种排列。

设计方法学

划分独立子任务——每一个子任务代表一个过滤器,并定义子任务的接口;
确定哪些必须有直接的输入哪些的输入可以从其他的过滤器得到;
确立拓扑结构,哪些可以并行,哪些必须穿行;
确定过滤器之后可以确定过滤器的连接方式——管道;
一个管道可以是从一个过滤器传递到另一个过滤器的一种方法(如消息调用或数据流);
也可以是一个独立的组件(如一个知识库或传感器);
过滤器的拓扑:
可以是简单的穿行结构;
也可以是使用组合模式,将简单的过滤器组合为复杂的拓扑结构。
管道的实现方法:
带参数的过程调用——类似于servlet;
控制组件——centralized的结构,一个控制组件控制全部的过滤器,并组织它们的拓扑结构,决定它们的数据流流动
强化模式——如果管道的任务不只是简单的传递数据,那么需要将管道实现为一种单独的组件,这种结构的实现可以看作为Producer-Repository-Consumer模式
对于管道-过滤器体系结构的设计和实现而言,数据流结构和参数格式的选择至关重要。因为不存在全局的数据结构,所有数据必须从一个组件传送到另外一个组件。
变种
管道系统——过滤器的线性结构
受限管道系统——对一个管道内部可以驻留的数据总量有个限制。
类型化管道系统限制了一个管道上传输的数据必须具有一种特定的数据类型。
Producer-Repository-Consumer模式

优缺点分析

优点:
可重用性,可定制性,可扩展性,可进化性,可测试性;
缺点:
效率——增加了层次结构,因此影响了效率
对流水的支持不够——后一个过滤器必须等待前一个过滤器全部完成才能开始处理,而不是部分完成就能够处理。——通过读写者模式和共享的数据存储区应该可以实现增量处理提高流水,SEDA就可以看做这种模式。

实现

简单实现:Java servlet
复杂实现:SEDA

附录

仲裁者——工作者模式
适配器模式——一个只有两名工作者的仲裁者—工作者结构被称为适配器结构。适配器的主要任务是将消息和数据从发出请求的工作者组件所采用的格式转化为接受它的工作者所需要的格式。
传感器模式——是适配器模式的一个特殊变体。它用来生成从一个特殊接口到一个普通接口的单向协议适配。
生产者——消费者模式
生产者——存储者——消费者模式
生产者——传感器——消费者模式
分享到:
评论

相关推荐

    迷宫生成器1.0迷宫生成器1.0

    迷宫生成器1.0 迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫生成器1.0迷宫...

    Vue2.0实现1.0的搜索过滤器功能实例代码

    Vue2.0删除了很多1.0的比较实用的过滤器,如filterBy,orderBy。官方文档给了通过计算属性实现1.0搜索过滤器功能,自己又加入了大小写通用检索功能,比较简单,学一下。 <body> <input type=text v-...

    1.0mm间距连接器SH1.0 2P-4P原理图PCB封装库3D库(AD集成库).zip

    1.0mm间距连接器SH1.0 2P-4P原理图PCB封装库3D库(AD集成库),拆分后文件为PcbLib+SchLib格式,Altium Designer原理图库+PCB封装库3D视图库,AD库均经测试,可以直接应用到你的项目开发提供项目进度。

    BooX Viewer 1.0 PDG阅读器

    用于阅读PDG格式文件的小巧阅读器,希望送给有包装的同志

    ModeConverter v1.0.1.5群联U盘模式转换工具.zip

    ModeConverter v1.0.1.5_CHS能够直接将群联主控直接把U盘做成光盘模式,而不需要进行量产操作。不过只支持用于群联主控的U盘。可定义分区类型为可移动盘、制作启动盘、ZIP/HDD/CDROM启动盘。支持自定义设置分区数量...

    http 1.0和1.1的差别

    http 1.0和http 1.1的差别

    SH1.0连接器封装PCB文件3D封装AD库

    SH1.0-LT-2P、SH1.0-LT-3P、SH1.0-LT-4P、SH1.0-LT-5P、SH1.0-LT-6P、SH1.0-LT-7P、SH1.0-LT-8P、SH1.0-LT-9P、SH1.0-LT-10P、SH1.0-LT-11P、SH1.0-WT-2P、SH1.0-WT-3P、SH1.0-WT-4P、SH1.0-WT-5P、SH1.0-WT-6P、SH...

    贪吃蛇1.0 贪吃蛇1.0 贪吃蛇1.0

    贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0贪吃蛇1.0...

    jstl-1.0和standard1.0版本

    jstl-1.0和standard1.0版本 亲测是成功的 适用于Javaweb项目

    网站整站下载器 1.0

    网站整站下载器 1.0 网站整站下载器 1.0 网站整站下载器 1.0 网站整站下载器 1.0

    Random City Generator 1.0 随机城市生成器Unity插件工具资源unitypackage

    Random City Generator 1.0 随机城市生成器Unity插件工具资源unitypackage 支持Unity版本2018.4.25或更高 生成器可以使用预制瓷砖创建一个随机城市。 在编辑模式或播放模式下使用生成器! 您可以用自己的模型创建一...

    BooX Viewer 1.0 [ PDG阅读器]

    BooX Viewer 1.0 [ PDG阅读器]

    ASP.NET Core 1.0中的管道-中间件模式

    ASP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline)。...  本文将描述”管道-中间件模式”的“契约式”设计和“函数式”设计两种方案。  一、什么是管道-中间件模式?  在此模式中抽象了一

    0.3间距1.0高FPC连接器规格书

    规格书 0.3间距1.0高 FPC连接器规格书

    expresscache1.0.86破解器

    配合expresscache1.0.86版本使用,安装完expresscache后不要立即重启,选择以管理员身份运行破解器,点击“Patch”即可

    jcache-1.0 jcache-1.0 jcache-1.0

    jcache-1.0jcache-1.0vvjcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-1.0jcache-...

    等保测评1.0与2.0区别.jpg

    等级测评 1.0与2.0 了解等保测评 信息安全等级保护测评,是经公安部认证的具有资质的测评机构,依据国家信息安全等级...2.0:在1.0的基础上增加了对云计算、移动互联、物联网、工业控制和大数据等新技术新应用的全覆盖

    nvu1.0 html编辑器

    nvu1.0 html编辑器,简单好用的html编辑器。备用。

Global site tag (gtag.js) - Google Analytics