机房重构三层
Posted 王思琪^
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机房重构三层相关的知识,希望对你有一定的参考价值。
结构概述
- 多层结构的划分方式:物理、逻辑
- 两层/三层结构
- 物理上的三层:显示层、业务层、数据层
- 逻辑上划分VS物理上划分
- 物理:显示层、业务层、数据层
- 逻辑:UI、BLL+DAL、DB
我们讨论的是UI(显示层)、BLL(业务逻辑层)、DAL(数据访问层)
为什么要分层?
1、解耦
目的是为了“高内聚、低耦合”
内聚:一个模块内各个元素彼此结合的紧密程度
耦合:一个软件结构内不同模块之间互连程度的度量
2、复杂问题简单化
各个分层分工明确,将一个复杂问题简单拆分了
3、便于系统维护与升级
各层间通过接口解耦,接口与实现分离,从而可以非常简单的替换掉实现,或者实际实现
4、为了管理和维护
使软件开发有条理有秩序,一目了然
UI、BLL、DAL分别是什么?
UI(表现层):展现给用户的界面
BLL(业务逻辑层):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑的处理
DAL(数据访问层):所做事务直接操作数据库,针对数据的增、删、改、查。将存储在数据库中的数据提交给B层,同时将B层处理的数据保存在数据库
D层的这些操作都是基于U层的。用户的需求反映给界面U层,U层反映到B层,B层反映给D层,D层进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户
应用场景
为什么要使用三层架构?
代码量比之前少
修改也方便
实现了代码的重用性
什么情况下需要使用?
1、既有数据访问层
2、也有业务逻辑层(BLL层)
当业务复杂到一定程度后,当数据存储到相应的数据库或者独立的数据存储介质的情况下,需要使用三层结构
什么情况下不需要三层结构?
1、业务逻辑简单
2、没有真正的数据存储层
数据访问层
DAL的作用
- 从数据源加载数据(Select)
- 向数据源写入数据(Insert、Update)
- 从数据源删除数据(Delete)
登录操作
public class UserDAO
{
public bool SelectUser(string userName,string Prossword)
{
throw new NotImplementedException();
}
}
具体操作数据源的具体对象
public class ScoreDAO
{
public void UpdateScore(string userName,int value)
{
throw new NotImplementedException();
}
}
显示层
UI的作用
- 向用户展现特定业务数据
- 采集用户的输入信息和操作
UI设计的原则
- 用户至上
- 兼顾简洁
业务逻辑层
BLL的作用
- 从DAL中获取数据,以供U层显示用
- 从U层中获取用户指令和数据,执行业务逻辑
- 从U层中获取用户指令和数据,通过D层写入数据源
BLL的职责机制
- UI->BLL->UI
- UI->BLL->DAL->BLL->UI
具体应用
原则
DAL:只提供基本的数据访问,不包含任何业务相关的逻辑处理
UI:负责显示和采集用户操作,不包含任何的业务相关的逻辑处理
BLL:负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI
程序集(Assembly)
- DAL、B:LL、UI分别在不同的程序集中
- 各个层之间的引用关系
- UI->BLL->DAL
- DAL所在程序集不引用BLL和UI
- BLL需要引用DAL
- UI直接引用BLL。可能会间接引用DAL
- UI->BLL->DAL
以上是关于机房重构三层的主要内容,如果未能解决你的问题,请参考以下文章