【机房重构】三层

结构概述

  • 多层结构的划分方式:物理、逻辑

  • 两层/三层结构
  • 物理上的三层:显示层、业务层、数据层

  • 逻辑上划分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

猜你喜欢

转载自blog.csdn.net/weixin_45490023/article/details/120416004