关闭

企业架构模式——分层

518人阅读 评论(0) 收藏 举报

一、分层设计的基本概念

在分解复杂的软件系统时,软件设计者用的最多的技术之一就是分层。在计算机体系机构中,可以看到,到处都有分层的例子,最为典型的,就是存储器的层次结构,如图所示:

存储器的层次结构

图1:计算机存储器的层次模型

可以看到,存储器的层次结构是按访问速度、存储容量等参数划分的,不同的层次有不同的职责。CPU内部的寄存器组是访问速度最快的存储设备,用于存储CPU运算过程中的指令和数据;主存中存储的的则是执行中程序(进程)需要的代码和数据。由于CPU访问主存的速度很慢,因此引入了高速缓存处理器(高速缓存),用于缓解CPU访问寄存器和主存的速度差异。同样,计算机网络中的TCP/IP协议栈也把层次性的设计思维体现的淋漓尽致:

TCP

图2:TCP/IP协议栈的五层模型

在层次结构中,上层模块依赖于下层模块,下层模块为上层模块提供服务,在代码中体现,就是上层可以调用下层提供的公共方法。比如应用层协议FTP架构在传输层TCP之上、TCP架构在互联网层协议IP之上。

当用分层的观点来考虑系统时,可以将各个子系统想象成“多层蛋糕”的形式,每一次都依托在其下层之上。在这种组织方式下,上层使用了下层定义的各种服务,而下层对上层一无所知。另外,每一层都对自己的上层隐藏其下层的细节。因此,第3层使用第2层提供的服务,第2层使用第1层提供的服务,第3层无需知道第1层的细节(当然,并非所有的分层架构都这么隔绝)。

将系统按照层次分解有很多好处:

①在无需了解其他层次的基础上,可以将某一层作为一个整体来理解

②可以很容易替换某层的实现,只要其前后提供的服务(接口)相同即可

③可以将层次间的依赖性减到最低

④一旦构建好了某一层,就可以用它为很多上层服务提供支持。比如,TCP可以同时被telnet、FTP和HTTP使用

分层式一种重要的技术,但也有缺陷

①层次有时会带来级联修改

②层次提供了一种间接性,因此过多的层次会影响性能

当人们讨论分层时,常常不容易区分layer和tier。这两个词汇经常被用作同义词,但是很多人还是认为tier意味着物理上的分离。客户/服务器系统常常被称为“two-tier system”,其分离是物理上的分离:客户端是一台台式机,而服务器端则运行在在另一个地方的服务器。layer强调无需把不同的层次放在不同的计算机上运行。

二、三个基本层次

层次 职责
表现层 与用户交互的接口
领域层(业务层) 业务逻辑,系统的核心
数据源层 与数据库、消息系统及其他软件包通讯

表现层:处理用户与软件的交互

领域层:也称为业务层,它完成领域相关的工作:包括根据输入数据或已有数据进行计算、对从表现层输入的数据进行验证,以及根据从表现层接受到的命令来确定应该调度哪个数据源逻辑。

数据源层:主要关注与其他系统的交互。比如数据库、消息系统等。

在某些小型系统中,表现层跨过了领域层而直接去和数据源层交互,实践证明这样也可以工作很好,不过这样的系统的业务逻辑都很简单。

三、参考资料

1、企业架构模式    Martin Flower  

[附:Android平台架构图、金山卫士产品架构图]

Android系统架构                        金山卫士产品架构图

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1266次
    • 积分:30
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档