【机房重构】三层

简介: 【机房重构】三层

结构概述

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

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

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

登录操作

1. public class UserDAO
2. {
3. public bool SelectUser(string userName,string Prossword)
4.     {
5. throw new NotImplementedException();
6.     }
7. }

具体操作数据源的具体对象

1. public class ScoreDAO
2. {
3. public void UpdateScore(string userName,int value)
4.    {
5. throw new NotImplementedException();
6.    }
7. }

显示层

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


相关文章
|
10月前
|
设计模式 网络协议 Java
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
86 0
|
数据库
【机房重构】七层
【机房重构】七层
|
存储 数据采集
三层基础
三层基础
52 0
|
测试技术 uml
架构学习-包图
架构学习-包图
127 0
|
数据库 C# 数据安全/隐私保护
三层实战(C#)
三层实战(C#)
42 0
|
设计模式 数据库
三层初体验
学习完了第一遍机房收费系统,我们就了解了高内聚,低耦合。学习完设计模式和三层,代码分层,功能分区,真正诠释了什么是高内聚,低耦合。接下来我将结合自己看过的视频,实现的代码为大家介绍一下我对三层的理解。
|
存储 缓存 5G
SDAP 子层 与PDCP 子层 | 带你读《5G 空口设计与实践进阶 》之十
用户面的 L2 自上而下包含 SDAP、PDCP、RLC 和 MAC 子层,如图 2-15 所示。其中,SDAP 子层是 NR 新定义的协议子层,其标志性功能是提供 QoS flow(流)映射。PDCP(Packet Data Convergence Protocol)子层主要为映射为 DCCH 和DTCH 逻辑信道的无线承载(RB)提供传输服务。其标志性功能是执行 IP 头压缩以减少无线接口上传输的比特数。
SDAP 子层 与PDCP 子层  | 带你读《5G 空口设计与实践进阶 》之十
|
SQL 存储 .NET
三层架构之我见 —— 不同于您见过的三层架构。
我从02年开始了编程的工作,开始接触一些简单的网站,下半年写了个小的自助建站程序(asp和asp.net),比较简陋没有使用。03年开始正式做网站(asp)。03年下半年开始改版三好在线(www.sanhaoonline.com   asp.net ),03年底、04年初才知道了三层架构的相关东东,一开始是很不了解的,所以呢根本就没有理睬,依旧按照我自己的思路写网站。
1227 0
两张图说明三层的奥义!
直入正题先看两张图:     第一张图呢类似理论上的三层,第二层负责很多事情,要挑起打大梁。而且要做到可以更换上下两层。   但是实际的项目呢?一部分项目做来做去,就变成第二张图了。第二层由制造者变成了传声筒和搬运工!   当然高手做的项目是很厉害的,达到了三层的预期目的。
1031 0