学到三层架构这部分,在开始接触三层之前,会发出这样的疑问,究竟什么是三层架构呢?看下面这张图,这是三层架构——
这也是三层架构——
这同样还是三层架构——
说到三层,我们首先要明确一下“层”的概念。什么是“层”呢?层就相当于一个黑盒子,我们不用知道它内部是怎么实现的,只需要知道如何去调用它就可以了,每层只与上下相邻的两层打交道,当一层内部由于技术变迁发生变化时,只要接口 不变,其它层不用做任何改变。当然三层架构除了优点之外,是有缺点的。它的缺点是使用三层后代码更多,工作量更大,相对而言系统也比较复杂。了解层的概念之后,我们来看一下具体什么是三层架构。
看了上面的图片,我们会发现,三层架构,即3—tier application,它是一种思想,主要是一种分层思想,而不是与某一种特定的技术所绑定在一起的某种东西。从概念上区分三层架构,是将这个业务应用划分为:表现层——UI、业务逻辑层——BLL、数据访问层——DAL三个层次。其中,这三个层次是依据其各自所属功能、负责区域的不同所划分的。而将一个系统整体区分层次的目的是为了“高内聚、低耦合”思想。而且分层之后灵活性提高了,也便于团队开发。下面呢我们来分别学习一下这三个层次。
1、表现层(UI):也就是U层,通俗的讲就是展现给用户的界面,即用户在使用一个系统时的所见所得。
作用:向用户展现特定业务数据;
采集用户的输入信息和操作
2、业务逻辑层(BLL):也就是B层,它是针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
作用:从DAL中获取数据,以供UI显示用
从UI中获取用户指令和数据,执行业务逻辑
从UI中获取用户指令和数据,通过DAL写入数据源(BLL不具备访问数据源的能力,因此想要访问数据源必须通过DAL)
BLL的职责机制:
UI ==> BLL ==> UI(UI提出请求,给BLL,BLL可以直接处理这件事,就自己处理了然后把结果传给UI)
UI = => BLL = = > DAL = = > BLL= = >UI(UI提出请求,收集一定的数据,传给BLL,BLL把请求转给DAL,DAL经过数据源访问/加工有转给BLL,BLL得到指令后把结果转给UI)
3、数据访问层(DAL):也就是D层,该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
作用:从数据源加载数据(Select)
从数据源写入数据(Insert/Update)
从数据源删除数据(Delete)
三层的具体应用:
- DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理
- UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理
- BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要的数据给UI。
值得一提的是,U层(表现层)和D层(数据访问层)他俩就好像两个冤家,他们相互之间是"不说话的",所以没办法将业务正常的进行下去,所以二者之间缺少B层(业务逻辑层)进行交互。具体关于三层架构的学习才刚刚开始,要想更深入的了解架构的好处和思想,仅仅从理论的角度切入是远远不够的。因此要求我们不断的在实践中去体悟三层的思想。