迷不迷糊?前后端、三层架构和MVC傻傻分不清

这篇具有很好参考价值的文章主要介绍了迷不迷糊?前后端、三层架构和MVC傻傻分不清。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现在的项目都讲究前后端分离,那到底什么是前后端,前后端和以前的MVC以及三层架构啥关系呢?今天就这个问题展开一下,方面后面的学习,因为前面讲的jsp、servlet和javabean根据实例,基本上有一个框架的理解了,谁处理什么业务也大概清楚了,而且也提到了MVC这个东西,那就先从MVC说起吧。

一、先说说MVC模式

先上一张图,剩下全靠编O(∩_∩)O哈哈~!

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

对于MVC的说明图我觉得上面这个比较好,尤其对初学者,如果用户直接面对控制器理解上不好转弯,所以这个图里面是用户面向的view视图。

MVC是一种经典的设计模式。
[1]M代表的是model,即模型层,表示企业数据和业务规则,拥有最多的处理任务,一般用于封装数据,如,java中的pojo对象,亦或是java Bean,其包含成员属性以及getter/setter方法;
[2]V代表的事View,即视图层,Java中一般通过JSP页面或者HTML的方式进行展示;
[3]C代表的是Controller,即控制层,是模型层和视图层的粘合剂,起到核心控制的作用。例如:用户发送一个HTTP请求,此时该请求首先会被控制层捕获,进而控制层去调用Service服务获取数据并将其封装在模型层,最后将模型返回给视图层并进行展示。

M、V、C三者之间的关系可以简化描述为:

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

二、再说说什么是三层架构

三层架构是一种架构思想, 通常意义上的三层架构就是将整个业务应用划分为:
表现层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层 (Data access layer)。
1、表现层 :通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 jsp/html
2、业务逻辑层 :针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 servlet,service
3、数据访问层 :该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。dao

对于以上三层架构各层的代表作品如下:表现层实现的代表作品是 Struts,springmvc 框架, 业务层实现的代表作品是 Spring ,持久层实现的代表作品是Hibernate,mybatis。

三层架构每层之间的逻辑关系:

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

三、三层架构和MVC的关系是啥子

三层架构定义如下:

界面层/表示层 UIL(User Interface Layer)
业务逻辑层 BLL(Business Logic Layer)
数据访问层 DAL(Data Access Layer)

三层架构是一个分层式的软件体系架构设计,是针对整个软件系统的解耦,各层之间通过接口进行交互;而 MVC 是一个软件设计模式,是针对 Web 系统的解耦。
MVC 是应用在三层架构基础之上的,MVC 中的V/C 相当于三层架构中的 UIL 界面层,而 M 相当于三层架构中的 BLL/DAL 层。

把MVC理解成表示层的一部分(定义为表现层的一种设计模式),或者说是把表现层进行了分化,分成了M模型V视图C控制器三部分,都是不合理的,对照下图看一下就应该能明白了,大家看这里面的。

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

这张图个人感觉就很清楚了,Model是跨了web表示层,业务层和数据访问层的,这样的图也是合乎逻辑的。

四、三层架构的优缺点

1、三层架构的优点

  • 开发人员可以只关注整个结构中的其中某一层;
  • 可维护性高,可扩展性高;
  • 可以降低层与层之间的依赖;
  • 有利于标准化;
  • 利于各层逻辑的复用。

2、三层架构的缺点:

  • 降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成;
  • 有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码;
  • 增加了开发成本。

五、MVC的弊端带来的前后端分离需求

MVC模型的弊端:

[1] 每次请求必须经过“控制器->模型->视图”这个流程,用户才能看到最终的展现的界面,这个过程似乎有些复杂;
[2]实际上视图是依赖于模型的,换句话说,如果没有模型,视图也无法呈现出最终的效果;
[3]渲染视图的过程是在服务端来完成的,最终呈现给浏览器的是带有模型的视图页面,性能无法得到很好的优化。

为了使数据展现过程更加直接,并且提供更好的用户体验,Roy Fielding博士在2000年写的一篇关于软件架构风格的论文,提出Representational State Transfer的思想,即现在所说的REST风格。核心思想就是首先从浏览器发送AJAX请求,然后服务端接受该请求并返回JSON数据返回给浏览器,最后在浏览器中进行界面渲染。其结构图如图所示:

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

我们将浏览器看做前端,服务器看做是后端的话,那传统的MVC模型就得到简化,实现了前后端的分离, 其结构图如图所示:

迷不迷糊?前后端、三层架构和MVC傻傻分不清,Java,IDE开发环境,JavaScript,mvc,前后端分离

六、给前后端分离一个定义

前后端分离是指将一个web 系统的动态内容和静态内容进行分离,包括其开发、部署等。
比如传统的 MVC 架构,HTML、JS、CSS… 等前端代码和 Java、spring、mybatis… 等后端代码是在同一个项目中进行开发、部署的。那前后端分离后就可以分多个项目进行开发、部署、多个前端、多个后端,通过 http restful api 接口的形式进行交互。

前后端分类的带来的好处也是显而易见的:
前端和后端互不影响,实现高内聚低耦合,提升工作效率。
静态资源不占用后端资源,可维护性,扩展性更好。
静态资源可以缓存到代理服务器上(Nginx),加速响应。
静态资源可以部署带 CDN ,用户可以就近访问,提升用户的访问速度和体验。

或者更具体化的理解为:

[1]复杂的业务逻辑与数据生成,只有在站点数据层处写了一次,没有代码拷贝;
[2]底层service接口发生变化,只有站点数据层一处需要升级修改;
[3]底层service如果有bug,只有站点数据层一处需要升级修改;
[4]站点展现层可以根据产品的不同形态,传入不同的参数,调用不同的站点数据层接口。
除此之外,产品追求绚丽的效果,并对设备兼容性要求高,不再困扰Java工程师,由更专业的FE对接;一点点展现的改动,不再需要Java工程师们重新编译,打包,上线,重启tomcat;约定好json接口后,Java和FE分开开发,FE可以用mock的接口自测,不再等待一起联调。

参考资料:

https://www.jianshu.com/p/4571a630af86

https://blog.csdn.net/qq_48508278/article/details/122648284

https://blog.csdn.net/weixin_44346687/article/details/120000472

https://blog.csdn.net/BASK2311/article/details/130760490

最后写一句:学而不思则罔,思而不学则殆,与大家共勉。文章来源地址https://www.toymoban.com/news/detail-837264.html

到了这里,关于迷不迷糊?前后端、三层架构和MVC傻傻分不清的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据治理----集中、分布的各种模式傻傻分不清楚

    1 、数据治理运营模型类型 :集中式治理;分布式治理;联邦式治理。在集中式管理模式中,数据治 理组织监督所有业务领域中的活动。在分布式管理模式中,每个业务单元中采用相同的数据治理 运营模型和标准。在联邦式管理模式中,数据治理组织与多个业务单元协同,

    2024年02月11日
    浏览(55)
  • MVC三层架构

    1.MVC三层架构 MVC(Model-View-Controller)是一种常见的软件设计模式,用于组织和管理应用程序的代码和逻辑。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。每个部分都有不同的职责和功能,以实现代码的分离和可维护性。 下面是对MVC三层

    2024年02月15日
    浏览(53)
  • CPython, Pypy, MicroPython...还在傻傻分不清楚?

    哈喽大家好,我是咸鱼 当我们说 Python 时,通常指的是官方实现的 CPython 但还有很多比如 Pypy、Jython、MicroPython、Brython、RustPython 等 “python” 许多小伙伴看到这些带 “python” 的概念可能一头雾水,心想这跟我平时接触到的 python 有什么区别吗?这些到底是什么 那么今天这篇

    2024年02月12日
    浏览(37)
  • Java empty、null、blank 还傻傻分不清楚?

    写代码时候经常遇到判empty、null和blank的情况。这些概念看起来很相似,但是它们有着不同的含义和用法。本文将介绍这三个概念的区别,并分析具体场景该如何做判断。 empty是指一个字符串长度为0/Java集合对象不存在元素,可以使用isempty()方法来判断一个字符串是否为空。

    2024年02月06日
    浏览(58)
  • MVC 三层架构案例详细讲解

    @ 目录 MVC 三层架构案例详细讲解 每博一文案 1. MVC 概述 2. MVC设计思想 3. 三层架构 4. MVC 与 三层架构的关系: 5. 案例举例:用户账户转账 5.1 M(Model :数据/业务处理层) 5.2 C (Controller : 控制层) 5.3 V (View :视图/展示) 6. 总结: 7. 最后: MVC开始是存在于桌面程序中的,M是指业务

    2024年02月05日
    浏览(54)
  • JavaWeb和MVC三层架构

    网站发布和部署一定要依托技术语言吗: 不一定,一个网站可以直接发布和部署,因为因为浏览器能够识别网页只需要两样东西,网络和静态页面,还有一个装在他们的容器,比如 nginx。 静态页面面临的问题: 1:静态网页是固定的,是不可变的。如果一个网站比如腾讯首页

    2024年02月14日
    浏览(53)
  • VR、AR、MR 傻傻分不清楚?区别的底层逻辑?

    VR是一种能够制作虚拟物体并与人互动的基础技术。它与操作者所处的环境无关。 AR可以让在特定位置出现或消失。 MR可以让虚拟物体与真实物体进行互动。 AR和MR的大部分应用场景都是随机的,所以硬件基本都采用手机和眼镜。提升了便携性。牺牲了性能。这就导致了AR与

    2024年02月11日
    浏览(49)
  • 备赛ing!美赛MCM和ICM还傻傻分不清楚?

    写在前面 想参加美赛为保研加分但不了解美赛? 不用慌张! 今天就来为大家介绍一下 美赛中MCM和ICM的区别 ,以及它们都是 适合于哪些人群参加 ,希望能够对大家有所帮助。 作为 世界范围内最具影响力的数学建模竞赛 ,美赛全称是美国大学生数学建模竞赛(也称为世界大

    2024年01月24日
    浏览(42)
  • 汽车虚拟ECU和MCU硬件虚拟化,傻傻分不清楚

    目录 1.概述 2.汽车虚拟ECU 3.汽车MCU虚拟化功能 4.小结 近几年,随着智能网联汽车普及,车型的更新迭代速度进一步提升,功能开发工程师希望在能够在硬件成型前验证软件功能,意味着汽车控制器的功能开发也在不断左移。 为此业内出现了对ECU进行虚拟化以加速开发的呼声

    2024年01月25日
    浏览(47)
  • VR、AR、MR、CR,虚拟现实傻傻分不清楚

    感觉不知道什么是VR就OUT了 其实除了VR之外,还有AR、MR、CR等外形类似 技术含量更高的头戴式设备,那么问题来了,这些*R们有哪些区别?   vr是由美国VPL公司创建人拉尼尔(Jaron Lanier)在20世纪80年代初提出的。其具体内涵是:综合利用计算机图形系统和各种现实及控制等接口

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包