百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

互联网项目的进步--前后端是怎么分离的?

ccwgpt 2024-10-24 09:22 20 浏览 0 评论

前后端是怎么分离的

当前互联网项目开发中,前后端分离几乎已经成为业界标准。并且,就目前趋势,前后端分离的开发模式将会是以后大型分布式架构,弹性计算架构,微服务架构以及多端化服务例如多种客户端,物联网终端,车载终端,手持设备等的坚实基础。

前后端分离的核心思想是前端Html页面通过Ajax调用后端Restful API接口并通过Json或Xml数据进行交互。后端只提供API用以响应前端请求。

当前,后端服务大致可分为以下两种即:

  1. Web服务器:一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源。
  2. 应用服务器:一般指像Tomcat,Jetty,Resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有Web服务器好;

一般都是只有Web服务器才能被外网访问,应用服务器只能内网访问。

我们的问题,前后端为什么会分离?

首先,以前的Web项目中,大多数程序员既做前端又做后端,例如几年前非常流行的JSP项目,前后端耦合性非常大。往往修改前端页面后端服务也要跟着变化,开发复杂度相当高,例如早期主要使用MVC框架,Jsp+Servlet的结构图如下。

大致流程就是所有的请求都被发送给作为控制器的Servlet,它接受请求,并根据请求信息将它们分发给适当的JSP来响应。同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境。JSP可以通过直接调用方法或使用UseBean的自定义标签得到JavaBeans中的数据。需要说明的是,这个View还可以采用 Velocity、Freemaker 等模板引擎。使用了这些模板引擎,可以使得开发过程中的人员分工更加明确,还能提高开发效率。

在这个开发时代,项目开发方式大致分为以下两种:

第一:

第二:

以上两种开发模式的缺点在于,前端无法单独调试,开发效率低,并且前端不可避免会遇到后台代码。

在总接以上开发模式的缺点及互联网的高速发展,在前后端完全分离之前,可以说出现过短暂的半分离状态期,在这一阶段,前端负责开发页面,通过接口(Ajax)获取数据,采用Dom操作对页面进行数据绑定,最终由前端把页面渲染出来。这也就是Ajax与SPA应用(单页应用)结合的方式,其结构图如下:

大致流程解释为:浏览器请求CDN返回HTML页面,HTML中的JS代码以Ajax方式请求后台的Restful接口,接口返回Json数据,页面解析Json数据,通过Dom操作渲染页面。

这种方式的优点是很明显的。前端不会嵌入任何后台代码,前端专注于HTML、CSS、JS的开发,不依赖于后端。

然而在这种框架之下也存在着相当多的弊端,例如:

  1. JS存在大量冗余,在业务复杂的情况下,页面的渲染部分的代码,非常复杂。
  2. 在Json返回的数据量比较大的情况下,渲染的十分缓慢,会出现页面卡顿的情况
  3. 资源消耗严重,在业务复杂的情况下,一个页面可能要发起多次HTTP请求才能将页面渲染完毕

在不断的探索和进步后,终于node.js的出现,使前后端真正意义上得到分离。在这一阶段,前端负责MVC框架中的View和Controller层。后端只负责Model层,对业务/数据进行处理等。

node.js适合运用在高并发、I/O密集、少量业务逻辑的场景。最重要的一点是,前端只需要会JS开发你不需要再学习后端语言就可实现对Controller层的代码编写,对前端来说,简直是福音。

分离时代的结构图如下:

大致流程是:浏览器请求服务器端的NodeJS,NodeJS再发起HTTP去请求JSP,JSP依然原样API输出JSON给NodeJS,NodeJS收到JSON后再渲染出HTML页,NodeJS直接将HTML页面flush到浏览器。

在该结构下,每种前端的界面展示逻辑由node层自己维护。如果产品经理中途想要改动界面什么的,可以由前端自己专职维护,后端无需操心。前后端各司其职,后端专注自己的业务逻辑开发,前端专注产品效果开发。

将node.js作为连接前后的中间层,得到了以下好处:

  1. 适配性提升;各个终端可以有自己的前端页面。
  2. 响应速度提升;后端返回给前端的数据简单了,相应速度提升。
  3. 性能得到提升;Nodo将前端需要的请求页面在内网阶段进行拼接。
  4. 异步与模板统一;Node可以异步,读文件可以并行,可以使前端页面异步显示。

最后总接一下,从经典的JSP+Servlet+JavaBean的MVC时代,到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架时代,再到前端框架(KnockoutJS、AngularJS、vueJS、ReactJS)为主的MV*时代,然后是Nodejs引领的全栈时代,技术和架构一直都在进步。

虽然"基于NodeJS的全栈式开发"模式很让人兴奋,但是把基于Node的全栈开发变成一个稳定,让大家都能接受的东西还有很多路要走。

以上就是本人对前后端分离的一些学习总接,在互联网高速发展的今天。前后端分离也不是我们最终的项目框架,创新之路不会停止,无论是前后端分离模式还是其他模式,都是为了更方便得解决需求,也许在未来会有更加简单和使用的开发框架出现,学习永无止境。

相关推荐

MFC、Qt、WPF?该用哪个?(mfc和wpf区别)

MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(MicrosoftFoundationClass)是微软提供的框架,...

一款WPF开发的通讯调试神器(支持Modbus RTU、MQTT调试)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍Wu.CommTool是一个基于C#、WPF、Prism、MaterialDesign...

关于面试资深C#、WPF开发工程师的面试流程和问题

一、开场(2-3分钟)1.欢迎应聘者,简单介绍公司和面试流程。2.询问应聘者是否对公司或岗位有初步的问题。二、项目经验与技术应用(10-20分钟)1.让应聘者详细介绍几个他参与过的C#、...

C# WPF MVVM模式Prism框架下事件发布与订阅

01—前言处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行...

WPF 机械类组件动画制作流程简述(wps上怎么画机械结构简图)

WPF机械类组件动画制作流程简述独立观察员2025年3月4日一、创建组件创建组件用户控件,将组件的各部分“零件”(图片)拼装在一起,形成组件的默认状态:二、给运动部分加上Rend...

C#上位机WinForm和WPF选哪个?工控老油条的"血泪史"

作为一个从互联网卷进工控坑的"跨界难民",在这会摸鱼的时间咱就扯一下上位机开发选框架这档子破事。当年我抱着WPF的酷炫动画一头扎进车间,结果被产线老师傅一句"你这花里胡哨的玩意...

【一文扫盲】WPF、Winform、Electron有什么区别?

近年来,随着软件开发的不断发展,开发人员面临着选择适合他们项目的各种框架和工具的挑战。在桌面应用程序开发领域,WPF、Winform和Electron是三个备受关注的技术。本文将介绍这三者的区别,帮助...

一个开源、免费、强大且美观的WPF控件库

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍HandyControl是一套基于WPF(WindowsPresentationF...

WPF 根据系统主题自动切换浅色与深色模式

WPF根据系统主题自动切换浅色与深色模式控件名:Resources作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopers...

WPF与WinForm的本质区别(wpf与maui)

在Windows应用程序开发中,WinForm和WPF是两种主要的技术框架。它们各自有不同的设计理念、渲染机制和开发模式。本文将详细探讨WPF与WinForm的本质区别,并通过示例进行说明。渲染机制W...

Win10/Win11效率神器再进化:微软发布PowerToys 0.90.0版本

IT之家4月1日消息,微软今天(4月1日)更新PowerToys,在最新发布的0.90.0版本中,修复多个BUG之外,引入多项功能更新,为Windows10、Windows...

一款非常漂亮的WPF管理系统(wpf架构及特性)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!WPFManager项目介绍该项目是一款WPF开发的管理系统,数据库采用的MSSqlserv...

WPF 实现描点导航(wpf按钮的点击事件)

WPF实现描点导航控件名:NavScrollPanel作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPF...

微软更新基于Win11的Validation OS 2504:增强 .NET与WPF

IT之家5月1日消息,科技媒体NeoWin今天(5月1日)发布博文,报道称微软公司更新基于Windows11的ValidationOS,增强支持.NET和WPF,并优...

WPF的技术架构与优势(wpf的前景)

WindowsPresentationFoundation(WPF)是一个现代化的用户界面框架,专为构建Windows应用程序而设计。它通过分层的技术架构和丰富的功能集,提供了全面的应用程...

取消回复欢迎 发表评论: