三层结构的认识html
这几天我在看三层的有关资料,对其有了一点的初步认识,如今对这一点点的认识作一下总结。数据库
1、三层的划分方式:物理上和逻辑上服务器
所谓的两层或是三层结构,它又分为物理上的划分和逻辑上的划分。架构
◆ 物理上的三层:显示层/业务层/数据层app
物理上的划分,能够理解为硬件上的划分,由于咱们设计的程序架构都是跑在计算机上的,不管是跑在客户机上、服务器上或者是终端机上的,终究它是跑在硬件上的。框架
在三层以前就有两层结构或者是单层结构。设计
1)下面的图1 是一张典型的CS“客户机”端和“服务器”端的两层物理结构图。orm
“客户机”端有用户界面和应用逻辑,“服务器”端就是数据库服务器。htm
客户机是PC机或是智能机,对象
2)下面咱们再看一下三层的物理结构图
物理上的三层:显示层/业务层/数据层
显示层,是PC机
业务层,是应用服务器。
数据层,数据库服务器。
◆ 逻辑上的三层:UI/BLL+DAL/DB
注意:三层结构的物理划分和逻辑上的划分,能够区分出:BLL和DAL都有可能跑在应用服务器上的,而不是数据库服务器上。
在这里咱们主要讨论的三层是指逻辑的三层,是在数据库之上讨论的三层:UI、BLL、DAL。
2、三层的应用场景
咱们为何要使用三层架构? 什么状况下不使用三层架构?
首先要清楚一点,并非全部的系统都须要使用三层架构的。
第一,业务逻辑简单;第二,没有真正的数据存储层,因此也就不须要数据访问层,这是就不须要使用三层架构。
只有业务逻辑复杂,既有数据访问层,又有业务逻辑层(BLL层),才须要使用三层架构的。
3、三层的结构
(1)数据访问层(DAL)
◆ DAL的做用
从数据源加载数据(Select)
向数据源写入数据(Insert/Update)
从数据源删除数据(Delete)
◆ DAL中经常使用的技术
ADO.NET+SQL语句
O/R Mapping框架 NHiberate(关系模型转换为对象模型)
访问SQL Sever数据库时Linq to SQL(它是单表映射)
因此说,DAL的职责:是与数据源打交道,读数据、写数据、删数据.
(2)显示层(UI层)
◆ UI的做用
向用户展示特定业务数据
采集用户的输入信息和操做
◆ UI设计的原则
用户至上,兼顾简洁
◆中的经常使用技术
WindowsForm:Form 、Control
ASP.NET:aspx 、ascx 、master 、html
(3)业务逻辑层(BLL)
◆ BLL的做用
从DAL中获取数据,以供UI层显示用
从UI中获取用户指令和数据,执行业务逻辑
从UI中获取用户指令和数据,经过DAL写入数据源。
◆ BLL的职责机制
UI→BLL→UI
UI→BLL→DAL→BLL→UI
总结:三层的关系
DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理。
UI只负责显示和采集用户操做,不包含任何的业务相关的逻辑处理。
BLL负责处理业务逻辑。经过获取UI传来的操做指令,决定执行业务逻辑,在须要访问数据源的时候直接交给DAL处理,处理完成后,返回必要数据给UI.
DAL/BLL/UI分别在不一样的程序集中
各个层之间的引用关系
UI→BLL→DAL
DAL所在程序集不引用BLL和UI
BLL须要引用DAL
UI直接引用BLL,可能会间接引用DAL。