首页IT科技mvc设计模式的运行原理(MVC设计模式、单体架构、前后端分离、微服务)

mvc设计模式的运行原理(MVC设计模式、单体架构、前后端分离、微服务)

时间2025-05-05 08:51:43分类IT科技浏览4215
导读:萌新程序员在学习web开发时一定对单体架构、前后端分离架构、MVC、微服务这几个名词不陌生,想要搞清它们之间的关系,但互联网的信息分散杂乱,有些文章之间甚至还互相冲突。...

萌新程序员在学习web开发时一定对单体架构          、前后端分离架构                  、MVC      、微服务这几个名词不陌生          ,想要搞清它们之间的关系                  ,但互联网的信息分散杂乱      ,有些文章之间甚至还互相冲突          。

我也迷迷糊糊       ,但本着刨根问底的精神                  。下面是我多日搜索       、学习而来的总结                  ,希望对同样存在疑惑的你提供一些参考      。当然本人水平有限         ,或许存在纰漏    ,也请批评指正!

正文开头                 ,先给出每个名词的解释:

单体架构

单体架构也称为单体系统或者单体应用            ,就是把一种系统中的所有的功能                  、模块耦合在一个应用中的架构方式       。

在项目中  ,我们通常将需求分为三个部分:数据库         、服务器处理    、前端展示                  。如果这些需求都实现在了同一个应用中                ,那么这个项目就是单体架构的         。

基于单体架构的项目最终会打包成一个唯一的包或者war包;它会以一个进程的方式来运行    。

但值得注意的是               ,单体架构并不能指我们理解中的单机应用                 。只要你的应用联网,那必然存在客户端和服务器端            。

前后端分离

前后端分离是最近几年火起来的概念             ,当然它的诞生肯定远早于此  。它其实包含两个不同的概念                  ,互联网上很多以讹传讹   ,将这两个概念混淆不清                。

一          ,它是指前后端分离开发                  ,这是从公司开发部门的组织架构的层面上讲               。与之对应的自然有前后端混合开发了。直接讲两者区别并无大用      ,这里要细讲一下开发的有关历史更能促进理解             。

首先可以明确的史实是:过去是前后端混合开发       ,现在的趋势是前后端分离开发                  。

为什么过去是前后端混合开发?有很多原因                  ,比如说过去程序员还是个稀缺的高端职业         ,人少自然能者多劳    ,一个程序员要干很多事                 ,自然前端后端全都要干   。同样            ,以前还主要是MIS(管理信息系统)的时代  ,一般系统或者网站的功能不多                ,几个人一起合作就不需要分工的很细致          。

这里还要重点提一下JSP它的特点就是允许开发人员在html中写JAVA代码                  。这种特殊的功能满足过去的混合开发需求               ,但缺点很明显,代码高度耦合             ,前后端甚至在同一个文件中      。现在已经几乎被淘汰了                  ,是前后端混合开发时代的眼泪       。

同理PHP也会导致耦合   ,但它如日中天          ,我认为至少很长一段时间内还不会被淘汰                  ,原因就在于PHP和MySQL之间浑然天成      ,效率高       ,开源                  ,而且简单易用                  。

为什么现在提倡前后端分离开发?这其实就是程序员分工的结果         。前端关注浏览器html等等         ,后端关注服务器和数据库等等    。这种专事专人的分工提高了工作效率                 。而且由于众多模板                 、引擎            、工具等    ,只用关注一端的程序员的门槛大大降低            。现在除了一些小公司和外包企业                 ,基本有规模的互联网行业公司都采用前后端分离  。

不过额外提一嘴            ,虽然前后端分离是社会大势所趋  ,但它更利好zbj                。作为学生或劳动者                ,即使你以就业为导向               ,你也至少专精一端而且熟悉另一端               。

二,它指软件架构层面的前后端分离。在这种意思中             ,web开发的前端和后端之间采用API进行交互                  ,俩方的程序之间完全解耦             。这种软件架构也对应上面讲的前后端开发模式                  。实际开发中   ,前后端先约定传递的数据类型等信息          ,前端程序员写前端页面                  ,然后调用假数据来测试前端页面的功能      ,等后端写好API等功能后再进行共同测试:前端通过HTTP请求调用后端提供的接口服务       ,后端调整接口参数和数据处理的相关功能   。前后端无强依赖                  ,如果需求变更         ,只要接口和参数不变    ,就不用两边都修改代码                 ,开发效率高          。

正因为两个不同含义之间关系紧密            ,才在传播过程中更容易混淆                  。如果你是正在学习的学生  ,完成某个课设作业想要采用前后端分离                ,那你指的应该是第二个含义      。

MVC

MVC是一种经典的设计模式               ,Model-View-Controller,即模型-视图-控制器       。M主要负责数据与模型             ,V主要负责显示                  ,C主要负责交互与业务                  。

具体的解释其他文章和书籍之间也大差不差   ,应该没人对这个基础解释有疑问         。

但重点是在我寻找资料时          ,出现了令人疑惑的两种说法:

MVC就是一种单体架构;

MVC是一种前后端分离模式;

很迷惑吧?看似两个完全相悖的说法                  ,但结合前面的解释其实不难理解    。

首先明确MVC是项目内部架构      , 前后端分离是周边系统架构                 。

为什么MVC是一种单体架构?因为模型-视图-控制器都在一个应用内       ,如果你手边有一个完整的程序的话                  ,可以打开你的IDEA project文件         ,你会发现你写的代码都在src文件夹里    ,你的代码是集中的            。

为什么MVC是一种前后端分离模式?这指的是改进后的一种MVC架构                 ,改进的MVC模式中            ,输入的是Ajax请求  ,输出的是JSON数据                ,比如REST就能实现此功能  。这在一定程度上进行了解耦               ,也可以使用前后端分离                。

MVC架构是我们在学习路上不可避开的课程               。不论是你在学校学习的过程中,还是进入一个企业             ,较小的程序非常适合使用MVC                  ,这种设计模式简洁高效   ,而且易于管理。比如有SSH和SSM框架都是值得学习参考的             。

微服务

系统由多个服务构成          ,每个服务可以单独独立部署                  ,每个服务之间是松耦合的      ,服务的内部是高内聚的       ,外部是低耦合的                  。高内聚就是每一个服务只关注完成一个功能   。

更重要的是                  ,微服务架构的设计只是过去架构的迭代         ,而不是完整的重新设计    ,因此我们可以看到如何使用其他架构的片段来创建标准微服务架构          。

简单的说                 ,微服务实际上是一个大型程序中集成和很多小程序            ,但这些小程序共用前端  ,而这些不同的后端服务就称为一个个微服务                  。我个人的理解是                ,微服务将M层简化               ,将C层变成了一个个轻量的Service.

结尾

本人水平有限,或许存在纰漏             ,也请批评指正!

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
火车头采集是什么意思(火车头采集wordpress,高效快捷的建站必备工具)