分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。尽管分层架构没有规定自身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数据库层。
复杂一点的分层架构图如下
分层架构的特点:
1. 分层架构中的每一层都着特定的角色和职能。
比如说展示层并不需要关心怎样得到用户数据,它只需在屏幕上以特定的格式展示信息。业务层并不关心要展示在屏幕上的用户数据格式,也不关心这些用户数据从哪里来。它只需要从持久层得到数据,执行与数据有关的相应业务逻辑,然后把这些信息传递给展示层。
2. 分层架构的一个突出特性是组件间关注点分离 (separation of concerns)。
一个层中的组件只会处理本层的逻辑。比如说,展示层的组件只会处理展示逻辑,业务层中的组件只会去处理业务逻辑。
这样的好处就是开发,测试,管理,维护都清楚多了 比如开发的时候就可以这样 张三和李四负责展示层,王五,马六负责逻辑层。
3. 每一层都是封闭的。
举个例子,从展示层传递来的请求首先会传递到业务层,然后传递到持久层,最后才传递到数据层。数据不能直接从展示层传递到数据库层,如果把写入数据库的操作也在展示层代码里写,就越写越乱了。
分层架构的优点,缺点和难点
作用:分解复杂的软件系统
优点:1、降低复杂度,上层不需要关注下层细节。
2、提高灵活性,可以灵活替换某层的实现。
3、减小耦合度,将层次间的依赖减到最低。
4、有利于重用,同一层次可以有多种用途。
5、有利于标准化。
缺点:1、不能封装所有工作,可能会带来及联修改。
2、过多层次影响性能。
难点:1、如何划分层次。
2、定义层次职责。
难点也是架构师的作用所在,有效的划分层次和定义职责后,团队的开发就会更加顺畅。
分层架构的演变历史
分层演化过程:
单层架构–>两层架构–>三层架构–>N层架构
单层架构:早期批处理系统
两层架构:C/S 客户/服务器模式
特点:没有复杂的领域逻辑
优点:有非常好的工具支持,VB、Delphi、PowerBuilder
缺点:代码冗余,难于维护。
模式:1、领域逻辑写在客户端
2、领域逻辑写在数据库(存储过程)
面向对象技术、WEB兴起、Java出现共同推进了三层架构。
Layer与Tier的区别:
1、Tier强调物理上的分离,Two Tier System。
2、Layer强调逻辑上的分层。
三层架构:表现层-领域层-数据源层(持久层)
1、表现层:提供服务,显示信息。
2、领域层:系统核心逻辑。
3、数据源层:与数据库、消息系统以及其他软件包通信
关于面向对象的三层架构理解:
面向对象——三层架构(表现层、业务层、持久层)
三层架构:即表现层、业务层、持久层。
① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射)。也就是哪个类对应哪个表,哪个属性对应哪个列。持久层
的目的就是,完成对象数据和关系数据的转换。
② 业务层:采用事务脚本模式。将一个业务中所有的操作封装成一个方法,同时保证方法中所有的数据库更新操作,即保证同时成
功或同时失败。避免部分成功部分失败引起的数据混乱操作。
③ 表现层:采用MVC模式。
M称为模型,也就是实体类。用于数据的封装和数据的传输。
V为视图,也就是GUI组件,用于数据的展示。
C为控制,也就是事件,用于流程的控制
设计原则:
业务层接口的设计原则:一个实体类一个接口,一次提交一个业务方法。业务方法的参数来自表现层。
持久层接口的设计原则:一个实体类一个接口,一次数据库操作一个持久方法。