软件架构的数据流总结(三)
2015-07-08 13:07
471 查看
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 星期三
典型样例: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 星期三
相关文章推荐
- krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
- 花生壳宣布网站的网址直接绑定到详细的项目——jboss版本
- 手游服务器常用架构图
- Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏
- Cordova 5 架构学习 Weinre远程调试技术
- 关于IE不兼容的网站页面
- [Study] 通过游戏学编程的网站
- 垂直类行业人才的招聘网站
- 基于rest架构的webservice
- 软件架构的数据流总结(二)
- android开发者应该收藏的优秀博客和技术网站
- MySQL高可用性大杀器之MHA | 火丁笔记
- 全新E:网站不是之前排名浮动 相比于竞争对手究竟缺少了什么?
- 个人家庭宽带搭建多域名web网站服务器配置
- php获取从百度、谷歌等搜索引擎进入网站关键词的方法
- Java UrlRewrite 实现网站URL重写过程实录
- 案例分析如何做好网站用户体验优化
- 网站制作网站制作如何实现图文并茂
- 网页色彩搭配详细解析过程_上海网站建设
- 网站优化前期需要注重那些细节呢