架构1.分层架构,什么是分层架构

分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。尽管分层架构没有规定自身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数据库层。

常见的图如下

复杂一点的分层架构图如下

分层架构的特点:

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为控制,也就是事件,用于流程的控制

设计原则:

业务层接口的设计原则:一个实体类一个接口,一次提交一个业务方法。业务方法的参数来自表现层。

持久层接口的设计原则:一个实体类一个接口,一次数据库操作一个持久方法。

参考资料
https://www.cnblogs.com/jichuang/p/6663940.html
https://blog.csdn.net/bboyfeiyu/article/details/45136299


This entry was posted in 技术管理 and tagged , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/layer-architecture/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

One Response to 架构1.分层架构,什么是分层架构

  1. 岳小林 says:

    说的,很明白,要想用好,还需要实践多练习

Leave a Reply

Your email address will not be published. Required fields are marked *

*

*