什么是架构模式

要理解三层架构模式,我们得先搞清楚什么是架构模式。(这里说的架构模式是针对后端开发)

所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不上架构设计了。而专门做架构设计的人就是架构师,这种人一般都是技术顶尖高手,而且只在大公司大系统开发中才有。而中小型公司是不太需要架构师的,为什么呢,马上就你会知道了。

所谓模式就是套路,换句话说,就是项目开发的固定流程或方式。

那么架构模式就是系统最高级别设计的套路。当架构师设计出架构模式,那么项目开发人员就必须按照相应的模式或流程做开发。

由于项目需求不同,所以架构师会设计很多不同的架构模式。而一些架构模式在很多项目开发中使用后,这些架构模式就变得非常流行了。比如,三层架构模式就是一个搞后端开发众所周知的架构模式,也是非常重要,需要掌握的架构模式。

为何三层架构模式对于后端开发人员这么重要呢?因为可以用它开发很多大型企业级 Web 项目。

什么是三层架构模式

三层架构模式采用一种分层的架构设计思想,将后端开发过程按照职责分为了三层:三层分别为表现层(UI)、业务逻辑层(BLL)、数据访问层或持久层(DAL)。

表现层(UI):

表现层的职责:直接跟前端打交互(一是接收前端ajax请求,二是返回JSON数据给前端)。

业务逻辑层(BLL):

业务逻辑层的职责:一是处理表现层转发过来的前端请求(也就是具体业务),二是将从数据访问层或持久层获取的数据返回到表现层。可以看出,业务逻辑层无疑是系统架构中体现核心价值的部分。

数据访问层或持久层(DAL):

数据访问层或持久层的职责:直接操作数据库(针对数据的增添、删除、修改、查找等),并将获得的数据返回到上一层(也就是业务逻辑层)。

通过上图可以很清楚的看到整个前后端的流程,如下:

  • 前端页面发送请求,请求通过网络来到 Web服务器(如Tomcat),Web 服务器收到请求将其转发给表现层;

  • 表现层接收到请求后,取出请求数据但自己并不处理,然后转发给业务逻辑层专门负责处理请求;

  • 业务逻辑层处理请求时,如果需要返回响应数据,则需要调用数据访问层或持久层;

  • 数据访问层或持久层只干一件事,就是专门和数据库打交道,将数据库操作获得的数据返回给业务逻辑层;

  • 业务逻辑层处理好后,又返回给表现层;

  • 表现层又返回给 Web 服务器,Web 服务器则直接返回给前端页面;

  • 前端页面收到数据后解析,并显示在页面上

  • 整个一次 Web 请求/响应流程就结束了。

只要搞懂了这个流程,你就很容易明白基于三层架构模式的Web项目开发过程了。

三层架构模式的优缺点

优点:

  1. 降低软件系统构件之间的耦合度,实现“低耦合、高内聚”原则

  2. 提升系统灵活性,可以在接口相同的情况下替换某层的具体实现

  3. 可以增强复用度,下层可以为多个上层提供服务

缺点:

  1. 三层架构模式一定程度会降低系统的性能。这是不言而喻的,如果不采用三层架构,可以直接访问数据库,以此获取相应的数据,如今却必须通过三层来中转完成。   

  2. 三层架构模式可能会导致各层的级联修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合三层架构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。  

总结

在软件架构设计中,三层架构模式是最常见,也是最重要的一种架构模式。人们期待分层设计能够达到“高内聚、低耦合”的设计目标。各层各司其职,使得开发人员分工明确,极大的提高了开发效率。虽然三层架构仍有不可避免的缺陷,但分层确实使代码维护、扩展非常方便,各层一定程度上达到了相互独立的目的,利大于弊。

JavaEE 三层架构模式的更多相关文章

  1. 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax

    一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...

  2. JavaEE三层架构与MVC

    JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 ​ 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...

  3. MVC开发模式与javaEE三层架构

    1.MVC开发模式 1. M:Model,模型.JavaBean        * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP        * 展示数据3. C:C ...

  4. JavaEE三层架构

    三层架构         三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...

  5. MVC模式(三层架构模式)

    (Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最早由Try ...

  6. MVC三层架构模式编程思想 JSP-Servlet-JavaBean

    MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...

  7. JavaEE 三层架构的浅谈

    三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...

  8. javaee三层架构案例--简单学生管理系统

    背景 学了jdbc.jsp等需要串起来,不然会忘记 项目环境 win10 jdk11 mysql8.0.13 jar包 c3p0-0.9.5.2 commons-dbutils-1.7 jstl mc ...

  9. [javaEE] 三层架构案例-用户模块(二)

    使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...

随机推荐

  1. 集合Set添加多个元素

    方一 Integer[] x=new Integer[]{4,6,9,10}; Set<Integer> set = new HashSet<>() ; Collections ...

  2. 22. VUE 插槽-详解

    插槽 一直对插槽不理解,今天学习,并整理一下,希望日后可以灵活运用. (一)插槽内容 先简单来个例子,看一下插槽的租作用. 1.1 不使用插槽 父组件中: <div id="app&q ...

  3. JAVAEE_Servlet_21_Cookie

    Cookie * Cookie 是什么? - Cookie翻译过来是曲奇饼干的意思 - Cookie可以保存回话状态,但是这个会话状态是保存在客户端上的,只要清除Cookie,或者 Cookie失效, ...

  4. Day09_43_Set集合_HashSet_02(HashCode方法 与 equals方法 )

    HashSet - 向Hash表中添加元素的过程? 1. 先调用将要被存储的值key的HashCode方法得出Hash值,如果该Hash值在现有Hash表中不存在,那么直接加入元素. 2. 如果该Ha ...

  5. Redis深入理解

    Redis Redis的三种集群方式 主从复制 原理 从服务器连接主服务器,发送sync(同步)命令 主服务器接收到sync命令后,开始执行bgsave命令生成RDB文件并使用缓存区记录此后执行的所有 ...

  6. 【swagger】 swagger-ui的升级版swagger-bootstrap-ui

    swagger-bootstrap-ui是基于swagger-ui做了一些优化拓展: swagger-ui的界面: swagger-bootstrap-ui界面: 相比于原生的swagger-ui , ...

  7. [源码分析] 并行分布式任务队列 Celery 之 Timer & Heartbeat

    [源码分析] 并行分布式任务队列 Celery 之 Timer & Heartbeat 目录 [源码分析] 并行分布式任务队列 Celery 之 Timer & Heartbeat 0 ...

  8. Python中Selenium模块的使用

    目录 Selenium的介绍.配置和调用 Selenium的配置 Selenium的调用 Selenium的使用 定位 定位元素的使用 定位下拉标签元素 在iframe框架之间切换 上传文件 Webd ...

  9. Windows核心编程 第十一章 线程池的使用

    第11章 线程池的使用 第8章讲述了如何使用让线程保持用户方式的机制来实现线程同步的方法.用户方式的同步机制的出色之处在于它的同步速度很快.如果关心线程的运行速度,那么应该了解一下用户方式的同步机制是 ...

  10. 【pytest系列】- mark标记功能详细介绍

    如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html mark标记 ​ 在实际工作中, ...