三层结构概述
三层架构通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface Layer),业务逻辑层(Business Logic Layer),数据访问层(Data Access Layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下到上分别为:数据访问层,业务逻辑层(领域层),表示层。
结构划分
多层结构的划分方式:物理/逻辑
两层结构:指的是客户机和服务器
三层结构:客户机,应用服务器和数据库服务器
物理上的三层:显示层,业务层,数据层
逻辑上划分VS物理上划分:
物理:显示层,业务层,数据层
逻辑:UI,BLL+DAL,DB
三层结构:UI(显示层),BLL(业务逻辑层),DAL(数据访问层)
各层的作用
一、DAL作用(数据访问层)
从数据源中加载数据
向数据源写入数据
从数据源删除数据
二、UI的作用(显示层)
向用户展现特定业务逻辑
采集用户的输入信息和操作
三、BLL的作用(业务逻辑层)
从DAL中获取数据,以供UI显示用
从UI中获取用户指令和数据,执行业务逻辑
BLL的职责机制
UI->BLL->UI
UI->BLL->DAL->BLL->UI
各层之间的职责关系
DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理
UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理
BLL负责处理业务逻辑,通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI
各个层之间的引用关系
UI->BLL->DAL
DAL所在程序集不引用BLL和UI
BLL需要引用DAL
UI直接引用BLL,可能会间接引用DAL
遵守规则
1、UI层只能作为一个外壳,不能包含任何业务逻辑的处理过程。
2、设计时应该从BLL出发,而不是从UI出发,BLL层在API上应该实现所有BizLogic,以面向对象的方式
3、不管数据层是一个简单的SqlHelper也好,还是带有Mapping过的Classes也好,应该是一定的抽象程度上做到系统无关
4、不管使用COM+(Enterprise Service),还是Remoting,还是WebService之类的远程对象技术,不管部署的时候是不是真的分别部署到不同的服务器上,最起码在设计的时候要做这样的考虑,更远的,还得考虑多台服务器通过负载均衡做集群
总结
三层其实就是U、B、D三层之间的互相传递调用,B层从D层调取数据,然后传送给UI层显示,B层从U层获取信息和数据,然后传递给D层存入数据源,然后就是之间的函数和信息传递,在后续不断学习中逐步完善对三层的理解。