JavaEE 三层架构模式
什么是架构模式
要理解三层架构模式,我们得先搞清楚什么是架构模式。(这里说的架构模式是针对后端开发)
所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不上架构设计了。而专门做架构设计的人就是架构师,这种人一般都是技术顶尖高手,而且只在大公司大系统开发中才有。而中小型公司是不太需要架构师的,为什么呢,马上就你会知道了。
所谓模式就是套路,换句话说,就是项目开发的固定流程或方式。
那么架构模式就是系统最高级别设计的套路。当架构师设计出架构模式,那么项目开发人员就必须按照相应的模式或流程做开发。
由于项目需求不同,所以架构师会设计很多不同的架构模式。而一些架构模式在很多项目开发中使用后,这些架构模式就变得非常流行了。比如,三层架构模式就是一个搞后端开发众所周知的架构模式,也是非常重要,需要掌握的架构模式。
为何三层架构模式对于后端开发人员这么重要呢?因为可以用它开发很多大型企业级 Web 项目。
什么是三层架构模式
三层架构模式采用一种分层的架构设计思想,将后端开发过程按照职责分为了三层:三层分别为表现层(UI)、业务逻辑层(BLL)、数据访问层或持久层(DAL)。
表现层(UI):
表现层的职责:直接跟前端打交互(一是接收前端ajax请求,二是返回JSON数据给前端)。
业务逻辑层(BLL):
业务逻辑层的职责:一是处理表现层转发过来的前端请求(也就是具体业务),二是将从数据访问层或持久层获取的数据返回到表现层。可以看出,业务逻辑层无疑是系统架构中体现核心价值的部分。
数据访问层或持久层(DAL):
数据访问层或持久层的职责:直接操作数据库(针对数据的增添、删除、修改、查找等),并将获得的数据返回到上一层(也就是业务逻辑层)。
通过上图可以很清楚的看到整个前后端的流程,如下:
前端页面发送请求,请求通过网络来到 Web服务器(如Tomcat),Web 服务器收到请求将其转发给表现层;
表现层接收到请求后,取出请求数据但自己并不处理,然后转发给业务逻辑层专门负责处理请求;
业务逻辑层处理请求时,如果需要返回响应数据,则需要调用数据访问层或持久层;
数据访问层或持久层只干一件事,就是专门和数据库打交道,将数据库操作获得的数据返回给业务逻辑层;
业务逻辑层处理好后,又返回给表现层;
表现层又返回给 Web 服务器,Web 服务器则直接返回给前端页面;
前端页面收到数据后解析,并显示在页面上
整个一次 Web 请求/响应流程就结束了。
只要搞懂了这个流程,你就很容易明白基于三层架构模式的Web项目开发过程了。
三层架构模式的优缺点
优点:
降低软件系统构件之间的耦合度,实现“低耦合、高内聚”原则
提升系统灵活性,可以在接口相同的情况下替换某层的具体实现
可以增强复用度,下层可以为多个上层提供服务
缺点:
三层架构模式一定程度会降低系统的性能。这是不言而喻的,如果不采用三层架构,可以直接访问数据库,以此获取相应的数据,如今却必须通过三层来中转完成。
三层架构模式可能会导致各层的级联修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合三层架构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
总结
在软件架构设计中,三层架构模式是最常见,也是最重要的一种架构模式。人们期待分层设计能够达到“高内聚、低耦合”的设计目标。各层各司其职,使得开发人员分工明确,极大的提高了开发效率。虽然三层架构仍有不可避免的缺陷,但分层确实使代码维护、扩展非常方便,各层一定程度上达到了相互独立的目的,利大于弊。
JavaEE 三层架构模式的更多相关文章
- 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
- JavaEE三层架构与MVC
JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...
- MVC开发模式与javaEE三层架构
1.MVC开发模式 1. M:Model,模型.JavaBean * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP * 展示数据3. C:C ...
- JavaEE三层架构
三层架构 三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...
- MVC模式(三层架构模式)
(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最早由Try ...
- MVC三层架构模式编程思想 JSP-Servlet-JavaBean
MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...
- JavaEE 三层架构的浅谈
三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...
- javaee三层架构案例--简单学生管理系统
背景 学了jdbc.jsp等需要串起来,不然会忘记 项目环境 win10 jdk11 mysql8.0.13 jar包 c3p0-0.9.5.2 commons-dbutils-1.7 jstl mc ...
- [javaEE] 三层架构案例-用户模块(二)
使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...
随机推荐
- ES6 第二天
三点运算符 <script type="text/javascript"> function func(...params){ params.forEach(funct ...
- Day01_05_Java第一个程序 HelloWorld - java类规则
第一个程序Hello World *基础语法规则: 1. 第一个Java程序 HelloWorld! public class HelloWorld{ public static void main( ...
- 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?
从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...
- css选择器中:first-child 与 :first-of-type的区别
## css选择器中:first-child 与 :first-of-type的区别 ---- :first-child选择器是css2中定义的选择器,从字面意思上来看也很好理解,就是第一个子元素.比 ...
- Vue学习(三)-Vue-router路由的简单使用
一.Vue-Router环境的安装: 如果使用vue-cli脚手架搭建,项目创建过程中会提示你自否选择使用vue-router,选择使用即可, 二.路由学习 1.路由的配置 vue-cli项目自 ...
- Windows驱动派遣函数的学习
//派遣处理例程的介绍: //IPR简介: //IRP全称(I/O Request Package),即输入输出请求包.他是windows驱动的重要概念,用户模式下所有对驱动程序的I/O请求,全部由操 ...
- 一枚Android "短信小偷" 病毒的分析
一.样本简介 样本来自于吾爱破解论坛链接地址为http://www.52pojie.cn/thread-410238-1-1.html,样本不是很复杂有空就分析了一下.Android病毒样本还是很有意 ...
- SPOJ 2713 线段树(sqrt)
题意: 给你n个数(n <= 100000),然后两种操作,0 x y :把x-y的数全都sqrt ,1 x y:输出 x-y的和. 思路: 直接线段树更新就行了,对于当 ...
- Python模块化编程
目录 模块化 自定义模块 模块的内置属性 导入模块 安装第三方模块 查看模块的属性和方法 模块化 在Python中,一个.py文件就称之为一个模块(Module),为了避免模块名冲突,Python又引 ...
- Linux下抓包命令tcpdump的使用
在linux下,可以使用 tcpdump 命令来抓取数据包. 主要用法如下: 过滤网卡 tcpdump -i eth0 #抓取所有经过网卡eth0数据包 tcpdump -i lo #抓取环回口的数据 ...