三层架构通常意义上的三层架构就是将整个业务引用划分为:表现层,业务逻辑层,数据访问层。区分层次的目的即是为了“高内聚,低耦合”的思想。
多层结构的划分方式:物理/逻辑
物理上的三层:显示层/业务层/数据层(客户PC;应用服务器;数据库服务器)
逻辑上的三层:UI(显示层) BLL(业务逻辑层)+DAL(数据访问层) DB
业务层的应用不需要 情况:业务逻辑简单,没有真正的数据存储层
需要情况:业务复杂,数据有独立的存储位置
显示层(View/UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
作用:向用户展现特定业务数据
采集用户的输入信息和操作
设计原则:用户至上,兼顾简洁
业务逻辑层BLL:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
作用:从DAL中获取数据,以供UI 显示使用
从UI中获取用户指令和数据,执行业务逻辑
从UI中获取用户指令和数据,通过DAL写入数据源
职责机制:
UI-BLL-UI
UI-BLL-DAL-BLL-UI
数据访问层DAL:该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
作用:
从数据源加载数据(Select)
向数据源写入数据(Insert/Update)
从数据源删除数据(Delete)
在具体项目中的应用
原则:DAL值提供基本的数据访问,不包含任何业务相关的逻辑处理;
UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理
BLL负责处理业务逻辑,通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接 交给DAL处理,。处理完成后,返回必要的数据给UI
应用:三层分别在不同的程序集中
各层之间的引用关系:UI-BLL-DAL
DAL所在的程序集不引用BLL和UI
BLL需要引用DAL
UI直接引用BLL,可能会间接引用DAL
三层优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
缺点:
有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。