三层架构

460 阅读3分钟

三层架构,大家都熟悉得不得了。我现在也能张嘴就来,轻易就可以说出"三层架构"这4个汉字。可是,我真正理解了吗?层是个什么东西,分层架构好处在哪里?

20年前,在我刚出来打工的时候,就有三层架构了。但我并不理解,只拾人牙慧地当时髦术语吹,结果有一次与客户交流时就露怯了。我说啥啥啥这样,就是三层结构了,结果引起哄堂大笑。不学无术,竟至于此。

后来好像有了一些进步,知道了三层是哪三层。但其实,直至现在,我都说不清分层的意义。因此,有必要弄清楚这一基本架构,基本概念。

一、什么是层

层是可以划分出构成整体事物中,上下相互支撑的不同部分。软件架构中层的概念有如下特点:

1)层能够被单独构造
2)每层具有区别于其他层的显著特点
3)层与层之间能够互相连接,互相支撑,互相作用,构成一个整体
4)层的内部可替换成其他可工作部分,对整体影响不大

二、三层应用架构的发展

1、一层架构
在这里插入图片描述
表示逻辑、业务逻辑和数据库访问逻辑等各种逻辑放在一起。

2、二层架构
在这里插入图片描述
数据库访问逻辑分离出来,但表示逻辑和业务逻辑仍然交织。

3、三层架构
在这里插入图片描述

三、什么是三层架构

无须多言。
在这里插入图片描述

四、三层架构的优势

优点
1、解决了代码间调用复杂,代码职责不清的问题。使得项目结构清楚,分工明确,有利于后期的维护和升级。

2、层间定义接口,接口与实现分离,每层内的实现部分容易替换而不影响整体,降低了层间依赖

3、利于标准化

4、系统分层也有助于开发人员明确分工,提高生产效率

5、利于各层逻辑的复用(复用于其他项目)

缺点
1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3、增加了开发成本。

以上优点都是从别的地方抄来的,人云亦云。如果照我自己的理解,分层架构,最大的优点应该是层间分工明确,每个层又相对独立,有利于编码、维护和升级。

据说计算机的所有问题,都可以通过添加虚拟层来解决。比如,某个操作与硬件对应,操作就与硬件耦合在一起了,情况有变,就非常被动。这时候,可以在操作命令与硬件之间增加一个虚拟层,操作着力于虚拟层的虚拟部件,再由虚拟层处理、转接到硬件。操作命令与硬件间多了一层中介层,变化就可以由这个中介层缓冲了。这不就是命令模式么。命令模式的作用,就是解耦。解耦的作用,就是方便作出调整。

我胡说的。