菜鸟眼中的三层架构[通俗易懂]

菜鸟眼中的三层架构[通俗易懂]菜鸟眼中的三层架构

大家好,又见面了,我是你们的朋友全栈君。

    最近在学三层,刚看到这个名字,就在想,三层是什么?它是用来干什么的?于是先上网查了一下,发现在信管中就接触过这块的东西,当时是客户服务器(C/S模式)中遇到的,我们现在所学的三层是从原来的两层演进而来的,传统的是两层结构:第一层是在客户机系统上结合了表现层与业务逻辑,第二层是通过网络结合了数据库服务器。后来经过演化,表现层与业务逻辑分离,于是就有了今天的表现层、业务层、数据层。

    这只是在学习之前的了解,个人认为三层架构和当时信管中的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逻辑层

    在文章开始,我们先介绍了物理层,又讲到了逻辑层,它们之间有什么联系,又有什么区别呢?

    逻辑层是把层按类的集合来划分,而这些层都在同一台服务器上,我们现在将要重构的机房中的三层就都在自己的电脑上。而物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105770.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 你真的懂Java怎么输出Hello World吗?「建议收藏」

    你真的懂Java怎么输出HelloWorld吗?1.你会不会输出”HelloWorld!”?2.小生抛砖引玉,欢迎指正3.总结1.你会不会输出”HelloWorld!”?当我们学习一门编程语言的时候,我们都会先学如何输出HelloWorld!????:“你真的会吗?”????:“会!”????:“以下这几个例子,我背都给你背下来!!!!”【骄傲】C语言printf(“HelloWorld!”);C++语言cout<<“HelloWorld!”;

  • Mybatis分页插件使用的详解[通俗易懂]

    Mybatis分页插件使用的详解[通俗易懂]前言关于分页,一般来说rowBounds这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题例子首先需要导入依赖,没错pagehelper<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><v

  • 树莓派视觉小车 — 人脸追踪(人脸识别、PID控制舵机运动)[通俗易懂]

    树莓派视觉小车 — 人脸追踪(人脸识别、PID控制舵机运动)[通俗易懂]效果展示基础理论(人脸识别)人脸检测算法按照方法可以被分为两大类,基于特征的算法、基于图像的算法。1、基于特征的算法基于特征的算法就是通过提取图像中的特征和人脸特征进行匹配,如果匹配上了就说明是人脸,反之则不是。提取的特征是人为设计的特征,例如Haar,FHOG,特征提取完之后,再利用分类器去进行判断。通俗的说就是采用模板匹配,就是用人脸的模板图像与待检测的图像中的各个位置进行匹配,匹配的内容就是提取的特征,然后再利用分类器进行判断是否有人脸。…

  • 【转载】读懂IL代码就这么简单 (一)

    【转载】读懂IL代码就这么简单 (一)

    2021年11月20日
  • java volatile可见性解析

    java volatile可见性解析很长一段时间中对于volatile关键字都是一知半解的,由于工作中用的比较少,也没有对其深入了解,直到看了《深入理解java虚拟机》之后,才有进一步的了解。   volatile是java虚拟机提供的最轻量级的同步机制,只能作用于变来那个,具备两种特性:保证此变量对所有线程的可见性:可见性是指一旦一个线程修改了此变量的值,其他线程能立即得知。禁止指令的重排序(本文暂不涉及)由于vol

  • es6 — 与解构赋值默认值结合使用[通俗易懂]

    es6 — 与解构赋值默认值结合使用

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号