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

原创 2015年07月08日 13:07:07

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 星期三

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/。

相关文章推荐

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

1. Model-View-Controller(MVC框架) This architecture is used in simpleGUI applications,不管是MFC,还是Matl...

React 数据流管理架构之 Redux

原文地址  http://www.alloyteam.com/2015/09/react-redux/ 继 Facebook 提出 Flux 架构来管理 React 数据流后,相关架构...

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

1. Model-View-Controller(MVC框架) This architecture is used in simpleGUI applications,不管是MFC,还是Matl...

安装kafka rest proxy - 使得我们能通过http访问kafka

安装kafka rest proxy - 使得我们能通过http访问kafka,这对于那些没用对应kafka客户端的语言尤其有用,比如php。 The Kafka REST Proxy provi...
  • xxgwo
  • xxgwo
  • 2016年05月12日 18:22
  • 4810

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

8. Blackboard(有点像老师叫学生上黑板写东西,而不是学生随意上黑板写) Blackboard是Knowledge Sources的通用数据结构,能够代表问题空间的所有状态,当需要分...

Android开发软件架构思考以及经验总结

欢迎关注我的知乎:井方哥 前言架构设计,到底是什么呢?基于这段时间的学习和自己的一些思考,我认为架构是基于产品和技术所达成的一种共识。我不是专业的架构师,也不是经验老道的开发者。本文目的有三,一是整理...
  • JF_1994
  • JF_1994
  • 2016年12月25日 16:31
  • 9434

软件架构经验总结

任何一款软件,从无到有,从初级到完善,一般都会经历一个漫长的过程。在这个过程当中,架构师的水平和软件体系架构本身的灵活性,就会处于一个很关键的位置。太多的软件,因为架构的问题,造成产品发布日期延迟,或...

软件架构中的5视图法经典总结

 架构设计中的5视图法    最近编辑过的 2011年4月10日 架构师需要满足的要求:1、满足性能、持续可用性等方面的软件“运行期质量属性”。2、满足可扩展性、可重用性等方面的软件“开发期质量属性”...

软件架构的控制流总结

在进行程序开发时,要从总体上对软件架构进行规划,软件架构(software architecture)包括两个aspects,control flow and data flow。这里先对typica...

Android开发软件架构思考以及经验总结

欢迎关注我的知乎:井方哥 前言 架构设计,到底是什么呢?基于这段时间的学习和自己的一些思考,我认为架构是基于产品和技术所达成的一种共识。我不是专业的架构师,也不是经验老道的开发者。本文目的有三...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件架构的数据流总结(三)
举报原因:
原因补充:

(最多只允许输入30个字)