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

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

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

    最近在学三层,刚看到这个名字,就在想,三层是什么?它是用来干什么的?于是先上网查了一下,发现在信管中就接触过这块的东西,当时是客户服务器(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逻辑层

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1602A的基本描述[通俗易懂]

    1602A的基本描述[通俗易懂]LCD1602的主控芯片是HD44780或者其它兼容芯片。与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除了普通字符外,还可以显示点阵图案,带有汉字库的还可以显示汉字,它的并行驱动方式与LCD1602相差无几,所以,在这里花点时间是值得的。//File1#ifndef__ZHANGTYPE_H__#define__ZHANGTYPE_H__#defineuint8unsignedchar#defineuin…

    2022年9月22日
    0
  • CMD关闭端口命令「建议收藏」

    CMD关闭端口命令「建议收藏」1.查询端口netstat-ano|findstr”123456″TCP127.0.0.1:12340.0.0.0:0LISTENING67892.查询端口名tasklist|findstr”6789″studio64.exe6789Console…

    2022年7月20日
    26
  • JS转换HTML转义符,防止javascript注入攻击,亲测可用「建议收藏」

    JS转换HTML转义符,防止javascript注入攻击,亲测可用「建议收藏」//去掉html标签123function removeHtmlTab(tab){ return tab.replace(/]+?>/g,”);//删除所有HTML标签}//普通字符转换成转意符123fu

    2022年7月17日
    13
  • ubuntu修改hosts文件_host文件怎么添加地址

    ubuntu修改hosts文件_host文件怎么添加地址ubuntu下修改host文件有些时候,我们需要让某些域名指向本地,来实现调试,下面介绍下ubuntu下修改host实现域名指向本地的方法。Ubuntu系统的Hosts只需修改/etc/hosts文件,在目录中还有一个hosts.conf文件,刚开始还以为只需要修改这个就可以了,结果发现是需要修改hosts。修改完之后要重启网络。打开host文件sudovim

    2022年10月9日
    1
  • 做计算机项目的流程图,软件工程实验三(程序流程图和PAD图)[通俗易懂]

    做计算机项目的流程图,软件工程实验三(程序流程图和PAD图)[通俗易懂]《软件工程实验三(程序流程图和PAD图)》由会员分享,可在线阅读,更多相关《软件工程实验三(程序流程图和PAD图)(2页珍藏版)》请在人人文库网上搜索。1、软件工程实验三(程序流程图和PAD图)SHANGHAIUNIVERSITY实验报告学院计算机工程与科学学院学姓号名10122030王杰陈圣波2013.12指导老师日期实验三下面为模块“产生毕业典礼学生表”的功能描述…

    2022年8月13日
    3
  • c语言 几种占位符的区别

    c语言 几种占位符的区别

    2021年9月29日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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