关闭

软件架构的数据流总结(三)

标签: 架构软件虚拟机structuregui
1205人阅读 评论(0) 收藏 举报
分类:

14. Interpreter / virtual machine (解释器/虚拟机)


典型样例:Java 虚拟机,Rule-based systems,脚本语言(JavaScript)

原理:Program or Script加载到解释器,创立Program和环境的链接。解释器从程序中读取指令并处理,从而影响Environment。

问题:比直接执行要慢许多;需要定制debugger;需要开发和实现特征丰富的编程语言。其实像python,Matlab,java都应该属于这种类型。

15. Hub-And-Spoke


应用:用来连接不兼容的遗留系统(legacy systems);

工作机制:spoke在hub上注册和取消注册。spoke X 发送消息给spoke Y时,先通过hub将X language转变为中间表示,然后再转变为Y language,最后将消息发送给spoke Y。

问题:More complex (debugging);Single Point of failure (hub)

16. Event Bus or Message Bus


典型样例:Process monitoring;Trading systems;Software development environments。

应用:当应用(app)可以被分解为功能独立的且能通过简单的消息通讯的模块时,可以选用这种架构。

工作机制:这些模块能够在run-time加入和移出。当一个模块希望与其他模块通讯时,就在Event Bus上放一个消息,然后Event Bus负责传递消息给收件人。有几种通讯可能发生在Event Bus上,1)发布-订阅(publish-subscribe):当一个模块发布消息到Bus上,所有订阅的Module都会收到;2)广播(broadcast):消息将传递给所有module;3)点对点(point-to-point):两两之间的通讯。这种机制跟各种总线通讯有点相似了,比如RS422、RS485等通讯协议,或者是网络通讯中的一些协议相关。

问题:当模块之间共享大量的数据时,再通过bus来pump数据可就不明智了。还要注意同步问题。

17. Structural Model (Synchronizer,同步器)


应用:飞行模拟器。这种pattern用在复杂的time-critical系统。当你需要联合定期或不定期的控制流时。当你的模块需要定期升级或者通过彼此之间发送消息使得状态改变的情况下。

工作机制:这种模式的核心是一个控制环:以固定的时间周期运行,被叫做时间间隔或时间帧。pattern包括一个应用特定部分,叫做应用级,一个一般的部分,叫做执行级。


18. Ports-And-Adapters / Hexagonal Architecture


这种结构的主要目的是将应用的核心逻辑与它使用的服务去耦合,允许不同的服务插入(plugged in),也允许应用在没有那些服务的时候照样执行。

core logic或者business logic是应用程序的核心;而services是不必要的,在不改变应用程序目的的情况下,是可以替代的。比如:数据库访问和其他类型的存储,用户接口元件,e-mail和别的通讯元件,硬件设备等。

优势:core logic能够独立于服务进行测试;很容用其他更适合需求改变的服务代替。

The primary adapter calls the API functions of the core logic。

这种应用可以被不同类型的用户使用,每个用户都可以创建他们自己的应用变体,通过插入定制的adapters。


完结


最后再总结一下:对于软件architecture,每个人都有每个人的设计,上面给总结的是比较鲜明的18种基于数据流的框架pattern,有些虽然不用自己去设计,但是在理解某些开发方式的时候是非常有益处的:比如MVC组件模型(或者PAC模型),很明显基本上GUI界面的设计都是基于这种模式,理解了这种模式,再进行界面开发时就有一种鸟瞰的感觉;比如virtual machine;比如Master-Slave等。

有些可能比较常见,比如MVC、PAC、Pipe and Filter,Master-Slave,layered system,client-server,state machine等,有些比较专用:structural model等。

对于常见的模型,能有一个比较好的深入理解,对于阅读程序或者是开发大型程序都是极有帮助的。

希望总结能对后续的学习有一定的帮助!

2015-7-8 14:16 星期三

0
0
查看评论

Soot数据流 -- 数据流框架

1.数据流分析框架关键步骤。 个人的问题:  什么叫做数据流分析?为何将下列问题作为关键步骤? 关键问题及步骤(soot生存手册中提到): 1.1. 决定分析的本质是什么:是否向前后者向后的数据分析?是否考虑分支,还是不进行考虑?等等 1.2. 确定自己想进行如何粗略的估计:是可能的...
  • TheSnowBoy_2
  • TheSnowBoy_2
  • 2016-06-21 22:33
  • 916

软件架构风格整理(1 数据流风格)

1         数据流风格1.1      批处理序列批处理风格的每一步处理都是独立的.并且每一步是顺序执行的.只有当前一步处理完后.后一步处理才能开始.数据传送在步...
  • hawksoft
  • hawksoft
  • 2012-10-21 09:32
  • 5918

数据源架构模式之表数据入口

数据源架构模式有四种:表数据之口,行数据入口,活动记录和数据映射器。 在了解它们之前,需对领域模型模式有一定的了解,可先参看 业务逻辑层之事务脚本与领域模型和业务逻辑层之表模块   一、概念 表数据入口(Table Data Gateway):充当数据库表访问...
  • liu0808
  • liu0808
  • 2017-07-16 08:54
  • 143

软件架构的数据流总结(一)

1. Model-View-Controller(MVC框架) This architecture is used in simpleGUI applications,不管是MFC,还是Matlab,亦或是android,基本上关于界面的开发,都是基于这种软件框架。看来还有web应用程序亦是如...
  • LG1259156776
  • LG1259156776
  • 2015-07-07 15:14
  • 1807

Soot -- 关于语句图(UnitGraph)的说明

代码中有说明: private static void testCFG2(SootMethod method) { // 1.获得方法体。 Body b = method.retrieveActiveBody(); System.out.println(b.toString()); ...
  • TheSnowBoy_2
  • TheSnowBoy_2
  • 2016-09-09 17:34
  • 750

基于Soot的Java程序分析生存手册(一)

基于Soot的Java程序分析生存手册 简介 本指南为Soot的使用提供了详细的描述和指导。Soot是一个Java优化框架,这里更多的关注怎么使用Soot,以及在涉及到多种不同形式的分析的多种工程中Soot的应用。这里要求读者对基本的静态分析概念有所理解(具体可以查看Michael I. Sch...
  • akiraWu
  • akiraWu
  • 2017-06-14 08:26
  • 1155

大数据流式分析系统框架(日志处理系统)

Flume+Kafka+Storm+Redis Flume(日志收集系统)可以理解为一个日志系统与消息组件之间的过渡端。负责日志数据埋点。 Flume的核心本质一定要结合Log4j和消息组件使用,由于其会产生大规模的日志数据,所以能够承受flume...
  • jiashun_
  • jiashun_
  • 2017-06-25 19:56
  • 960

软件架构的数据流总结(二)

8. Blackboard(有点像老师叫学生上黑板写东西,而不是学生随意上黑板写) Blackboard是Knowledge Sources的通用数据结构,能够代表问题空间的所有状态,当需要分离的数据结构时,Blackboard可以分开为多个面板(panels)。Knowledge Sour...
  • LG1259156776
  • LG1259156776
  • 2015-07-08 11:13
  • 1077

流式大数据处理的三种框架:Storm,Spark和Samza

许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对三种Apache框架分别进行简单介绍,然后尝试快速、高度概述其异同。Apache Storm在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master...
  • zly9923218
  • zly9923218
  • 2016-07-22 11:34
  • 1450

软件架构的数据流总结(三)

14. Interpreter / virtual machine (解释器/虚拟机) 典型样例:Java 虚拟机,Rule-based systems,脚本语言(JavaScript) 原理:Program or Script加载到解释器,创立Program和环境的链接。解释器从程序中...
  • LG1259156776
  • LG1259156776
  • 2015-07-08 13:07
  • 1205
    个人资料
    • 访问:1890075次
    • 积分:22124
    • 等级:
    • 排名:第393名
    • 原创:271篇
    • 转载:946篇
    • 译文:3篇
    • 评论:192条
    博客专栏
    最新评论