三层架构(3-tier architecture)就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
他的作用是:向用户展现特定业务数据;采集用户的输入信息和操作。他的设计原则是“用户至上,兼顾简洁”。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。
BLL的作用:从DAL中获取数据,以供UI显示用;从UI中获取用户指令和数据,执行业务逻辑;从UI中获取用户质量和数据,通过DAL写入数据源。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
DAL作用:DAL专与数据源打交道,他从数据源加载数据(select),想数据源写入数据(insert/update),删除数据源里的数据(delete)。
他们遵循的原则:
DAL不包含逻辑处理,只提供基本的数据访问。
UI只负责显示和采集用户操作,不包含业务逻辑。
BLL复杂处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理,处理完后,返回必要数据给UI。
他们各个层之间的引用关系:
UI ---> BLL ---> DAL,DAL所在程序集不引用BLL和UI,BLL引用DAL,UI引用BLL,可能会间接引用DAL.
用一张结构图表示:
![](https://img-my.csdn.net/uploads/201302/14/1360847549_1343.png)
分层的目标是为了“高内聚,低耦合”,分层可将复杂的简单化,可解决需求的变更带来的问题,你只需要该相应部分而不用大范围的修改。分层还提高了可维护性和可扩展性,但并不是所有的都要分层,业务逻辑简单,没有真正的数据存储层这时就不需要分层,如果分层反而会增加复杂度。