12月28, 2011

软件系统的大比例结构

一 layered architecture

分层式程序结构,要求程序根据功能,划分多个层次。

1 层次

分层式建构方式,将系统划分为 表现层,应用层,领域层,基础设施层。 1 表现层
1) 负责向用户显示信息
2) 对用户指令的解释(指令驱动的CMD或事件驱动的GUI,最终都会被解释为应用层可以理解的用户行为)

2 应用层
1) 对领域层对象进行调度,分配工作,协调它们完成业务
2) 为其他系统的应用层提供调用接口,多系统的对接,必须限制在应用层完成

注意,应用层不能包含业务逻辑及业务状态,,应用层向表现层提供另一种状态,即应用程序状态,比如某任务的工作进度等等,

3 领域层
负责表达业务的概念、状态及规则。
领域层,是业务系统的CORE。

4 基础设施层
1) 为界面层提供绘制接口
2) 为业务层持久化数据
3) 为应用层各模块之间传递消息(提供通信信道)
4)为软件系统整体提供log,debugger等功能

重点在于对领域层的明确,我们可以容忍系统存在多个基础设施层,也可以容忍表现和应用层的混合,但是领域层一定要分离出来,,让表现层,应用层,基础设施层,都不包含业务知识。

2 上层对底层的依赖方式 (底层对上层的服务方式)

1) SERVICE式
分层式系统建构,上层可以直接依赖下层,下层向上层以SERVICE形式提供服务。
上层直接对下层进行调用,但下层不可以对上层的服务进行直接调用。
下层对上层的调用,必须是由上层触发的,也就是必须为callback或observer形式。

2) 侵入式
在某些特定领域,下层可能会要求其它层以特定的方式来实现,并提供了接口或父类。
这种属于侵入式的架构方式,在软件的插件开发中经常会使用这种方式。

侵入式,一般来说都是以框架(framework)的形式向上层提供了服务,,另外,也规定了上层的编写规则。

在WEB领域的服务端前端开发中,比较流行的MVC-Framework,一般都是应用了layered architecture 和 bounded context两种大比例结构。在mvc系统中,由单一入口脚本index接手了http请求,并解析http请求中的querystring信息,根据url信息,对上层(controller层)进行了对象创建、持有与接口调用。

侵入式架构需要谨慎考虑,,一方面,我们通过底层提供的调用约定,约定了上层的开发方式,但这必须是基于对相关领域的技术流程的全面把握与清晰的认识。另一方面,,侵入式架构,也让上层失去了一定的灵活度。

二 SMART UI

smart ui,智能式界面程序结构,与layered architecture的哲学理念是相反的,,鼓励将业务行为,及基础设施(如业务对象的持久化),全部集中到界面元素的事件中来处理。

其优点是学习容易,开发迅速,,适合进行简单程序的开发。

缺点就是因为抽象程度很差,,多系统的整合必须通过数据库来通信,,没有中间的通信层。

三 transaction script

transaction script,事务脚本式程序结构。[Martin Fowler(2002)]

事务脚本式架构,
与smart ui不同的是: 将用户界面从应用层分离了出来,并不是在用户界面层实现所有的业务逻辑及基础设施代码。
与layered architecture不同的是: 应用层并不提供对象模型,而是提供事物脚本方法,

本文链接:https://75team.com/post/软件系统的大比例结构.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。