菜鸟眼中的三层架构
2015-10-29 16:58
246 查看
最近在学三层,刚看到这个名字,就在想,三层是什么?它是用来干什么的?于是先上网查了一下,发现在信管中就接触过这块的东西,当时是客户服务器(C/S模式)中遇到的,我们现在所学的三层是从原来的两层演进而来的,传统的是两层结构:第一层是在客户机系统上结合了表现层与业务逻辑,第二层是通过网络结合了数据库服务器。后来经过演化,表现层与业务逻辑分离,于是就有了今天的表现层、业务层、数据层。
这只是在学习之前的了解,个人认为三层架构和当时信管中的C/S模式有联系。那么专业的三层架构又是怎么一回事呢?首先来看导图:
例如:数据逻辑代码与业务逻辑层分离后,当数据库服务器更改时,只需要更改数据访问的代码,而与业务逻辑层无关,所以不需要改变或重新变异哦业务逻辑层。
显示层(User Interface Layer):
显示层就是用来采集用户输入的信息和操作,并向用户展现特定业务数据。在UI层中常用的技术有:Windows Form:Form、Control,ASP.NET:aspx、master、html等。
业务逻辑层(Business Logic Layer):
该层负责从UI中获取用户指令和数据,执行业务逻辑,并通过DAL写入数据源,还可以从DAL中获取数据,将结果返回给UI。
如果不涉及到数据访问层时,消息是这样传递的:
如果三层协调工作,消息又是这样传递的:
数据访问层(Data Access Layer):
用来从数据源加载数据,也就是查找数据,数据源包括数据库、XML文件、文本文件等;向数据源写入数据或删除数据。简单的总结一下就是数据库中的增删改查。
简单描述一下,
1.UI直接引用BLL,BLL直接引用DAL,DAL所在程序集不引用BLL和UI。
2.如果需要,UI间接引用DAL
3.如果需要增加实体类Model时,UI、BLL、DAL都需要引用Model。
逻辑层是把层按类的集合来划分,而这些层都在同一台服务器上,我们现在将要重构的机房中的三层就都在自己的电脑上。而物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信。
这只是在学习之前的了解,个人认为三层架构和当时信管中的C/S模式有联系。那么专业的三层架构又是怎么一回事呢?首先来看导图:
什么是三层架构?
为了达到“高内聚,低耦合”的程序设计思想,引入了三层架构,在表现层和业务层分离开来,再加上数据访问层,便形成了今天的三层架构。为什么要使用三层?
如果是一些业务逻辑简单,或者没有真正的数据存储曾的业务,可以不使用三层架构,但是对于业务复杂,数据要求有独立的存储介质的时候,就需要用到三层架构。三层架构的好处?
使用三层架构后,每一层都可以更改少量代码后就放在物理上不同的服务器上使用,结构灵活而且性能更好。此外,每层做些什么其它层是完全看不到的,因此更改、更新某层,都不需要重新编译或者改变全部的层。体现了程序设计时低耦合的思想,是一个非常强大的功能。例如:数据逻辑代码与业务逻辑层分离后,当数据库服务器更改时,只需要更改数据访问的代码,而与业务逻辑层无关,所以不需要改变或重新变异哦业务逻辑层。
三层具体划分
在信管中我们所学的是物理上的三层,包括显示层、业务层、数据层,而我们今天看到的是逻辑上划分的三层,与物理的三层相对应的有UI、BLL+DAL、DB。下面我们就具体了解一下UI、BLL、DAL。显示层(User Interface Layer):
显示层就是用来采集用户输入的信息和操作,并向用户展现特定业务数据。在UI层中常用的技术有:Windows Form:Form、Control,ASP.NET:aspx、master、html等。
业务逻辑层(Business Logic Layer):
该层负责从UI中获取用户指令和数据,执行业务逻辑,并通过DAL写入数据源,还可以从DAL中获取数据,将结果返回给UI。
如果不涉及到数据访问层时,消息是这样传递的:
如果三层协调工作,消息又是这样传递的:
数据访问层(Data Access Layer):
用来从数据源加载数据,也就是查找数据,数据源包括数据库、XML文件、文本文件等;向数据源写入数据或删除数据。简单的总结一下就是数据库中的增删改查。
三层之间的引用关系
简单描述一下,
1.UI直接引用BLL,BLL直接引用DAL,DAL所在程序集不引用BLL和UI。
2.如果需要,UI间接引用DAL
3.如果需要增加实体类Model时,UI、BLL、DAL都需要引用Model。
物理层VS逻辑层
在文章开始,我们先介绍了物理层,又讲到了逻辑层,它们之间有什么联系,又有什么区别呢?逻辑层是把层按类的集合来划分,而这些层都在同一台服务器上,我们现在将要重构的机房中的三层就都在自己的电脑上。而物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信。
相关文章推荐
- frame buffer编程--重新架构代码,实现动态效果
- 百度认为什么样的网站更有抓取和收录价值
- 技术博客网站推荐
- 安卓开发常用网站
- php抓取网站图片并保存的实现方法
- 转雅虎web前端网站优化 34条军规
- 浅谈服务器架构之MMORPG端游
- OpenDaylight融合OpenStack架构分析
- 代码原理 webkit WebKit-利用百度siteapp开发网站App-(IOS和Android版本)
- ASP.NET动态网站制作(21)-- C#(4)
- 嵌入式开发网站收藏
- 可伸缩的Web架构发展史
- 网站域名的选择
- Java Web开发的轻便架构Tapestry5---简介
- 利用ssrf 掩盖自己的ip地址,从而攻击其他网站
- 一个分布式服务器集群架构方案
- 同时看过 unreal4 和 Unity 源代码的人觉得哪个引擎架构更好?
- 如何判断是否需要升级网站服务器带宽
- OOD软件架构设计原则
- tornado 学习笔记5 构建Tornado网站应用