暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

被提问:前后端分离式开发?最全答案来了!(收藏)

2123



毕业设计和论文成为毕业生心心念念而又讳莫如深的关键词。在这些毕业设计和论文中“前后端分离”成了高频词。然而细细读来,这些设计和论文中的“前后端分离”却是“形似而神不似”。于是,在答辩时不同的同学讲的“前后端分离”不完全相同。台上答辩的同学和台下的老师的理解也可能有差异。为了避免尴尬,彼此在听到这个词时碎碎念着“一头羊,两头羊...”


01

前后端分离的基础特征


1

基于API+JSON的开发

从开发人员最熟悉的功能角度来看。前后端分离之后面临的一个重要问题:如何把前端和后端组合成一个系统。于是,前后端分离的同时要保证前后端的“弱耦合”。而当前实现“弱耦合”的主要方法是接口API的调用和返回结果的简单、通用表示。API越简单、通用、统一、稳定越好,结果的表示方法目前主要采用JSON(在未来也可能是其他方法,就像JSON出现之前是XML一样)。于是,前后端开发的第一个特征是基于API+JSON的开发。


2

按照不同的关注点进行分层开发

从功能角度看,前端主要关注和用户的交互,即以用户习惯的方式收集数据,并将结果以用户习惯的方式加以呈现。前端收集的收据要在后端进行存储、处理,后端把查询、进行处理后的数据结果返回给前端。于是,前端涉及到用户数据的收集、封装和把数据转发给后端,后端将处理后的数据传递给前端进行渲染。为了前后端的无缝对接,可以在前端引入Node.js以构成大前端。

无论是简单的前后端分离,还是大前端的前后端分离。其核心的思想都是根据功能、关注点对开发进行分离,而分层是重要分离方法。于是,前后端分离的思想可以追溯到N层结构、三层结构、MVC等概念。

当然,不仅仅前后端可以分离;前端内部也可以分离,可以形成MVC、MVVM、MVP等MV*模式;后端内部也可以分离,形成诸如MVC、微服务等模式。

于是,前后端开发的第二个特征是按照不同的关注点进行分层开发。这也说明,前后端分离更多是思想层面、架构层面、模式层面的词语,在不同的技术背景下、不同的应用场景下,其技术内涵十分丰富,以至于无法给出一个唯一的统一技术解决方案。


3

不同技术栈与非全栈要求

前端、后端功能不同、关注点不同,所用的开发技术栈也不同。前后端分离的一个好处就是便于开发人员的分工和开发的组织。前端开发人员进行前端开发,后端开发人员进行开发。这样的话,前端开发人员只需掌握前端的技术栈,如JavaScript等。后端开发人员只需要掌握后端的技术栈,如Java和Spring Boot、Go等。


4

并行开发

前后端分离后,还可以实现前端、后端的并行开发。这是前后端分离的优势之一。这要求对开发过程进行管理以实现并行开发。

02

前后端分离的常见误解


1

前后端分离≠Spring Boot + Vue

Spring Boot + Vue可能是最出名的前后端分离方案,但实际上可以用不同的技术生态实现前后端分离。Spring Boot是重要的Java开发框架,以后端为Java框架来看,Spring Boot+Vue是一种前后端分离实现方式,也可以在此基础上增加其他技术(或框架、工具),如Midway框架、若依开发框架等。与此类似,前后端分离≠Spring Boot + React,前后端分离≠Spring Boot + Angular,前后端分离≠Spring Boot + 小程序。


2

前后端分离≠前台 + 后台 + 中台

前台包括与用户直接交互的界面,如Web页、APP;也包括服务端各种实时响应用户请求的业务逻辑,如商品查询、订单系统等。后台面向内部运营人员的管理系统、配置系统,如电商配置后台的商品管理、订单管理、会员管理、财务管理等。后台可为前台提供一些基本的配置。在传统的前台+后台架构中,各个项目相互独立,许多项目都在重复发明同样的功能,让项目本身变繁琐,也让开发效率变低。为提高开发效率,有必要整合出一个中间组织,为所有的项目提供一些公共资源(功能)。而这个中间组织,就是所谓的 “中台”。中台整合某种通用能力提供给前台,包括业务中台、技术中台、数据中台、算法中台等。业务中台把各个项目的共通业务整合成通用的服务平台,如支付、商品管理、营销、用户、搜索、交易中心等。技术中台避免重复开发,能给各个项目提供通用的底层框架;如分布式缓存、MQ、RPC框架等。数据中台为各个项目进行各种数据统计和分析,如用户画像、数据可视化、日志分析等。算法平台为各个项目提供算法,如推荐算法、搜索算法等,如搜索算法、推荐算法、语言识别等。

前后端分离主要是从开发人员分工、功能和技术实现的角度来说的,而前台、后台、 中台更多是从用户分工、功能和操作所起的作用来说的。


3

前后端分离≠MVC

MVC只是一种架构,而前后端分离可以采用的分离实现方法有许多种。


4

前后端分离≠B/S

B/S是一种架构,更多的是一种物理及配置的划分;而前后端分离可以采用的分离实现方法有许多种,例如移动终端和服务器分离的架构。


5

前后端分离≠ 学习简单

在学校,不像正式的开发环境中有人一起协同开发,学习者需要进行前后端全栈式的学习。作为学习者来说,学习前后端分离不仅不意味着简单,往往会是一种更高的要求。


6

前后端分离≠ Restful风格

虽然Restful风格的接口是当前的重要实现方法,也有一些其他的API实现方法,特别是在将来可能会有新的技术实现方法。


7

前后端分离≠ 云开发

云开发提供完整的后端云服务,提供数据库、存储、函数、静态托管等基础能力,以及扩展能力;无需管理基础架构。既包含了前端也包含了后端。可用于小程序、公众号、H5 应用、PC Web 应用、移动应用等不同的场景。


8

前后端分离≠ 微服务

微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过RESTfuL API进行协作。常见微服务框架有Spring Cloud、Spring Cloud Alibaba、Dubbo、ServiceComb、Tars、Thrift、Motan等。


9

前后端分离≠ Serverless

Serverless,又叫无服务器。Serverless 强调的是一种架构思想和服务模型,让开发人员无需关心基础设施(服务器等),而是专注到应用程序业务逻辑上。Serverless 是一种抽象层次更高的架构模式,“FaaS + BaaS”是 Serverless 这种架构模式的一种实现。其中,FaaS 是一种特定类型的服务,例如 AWS Lambda,Google Cloud Functions,Azure Functions,阿里云函数计算和腾讯云云函数等等;而 BaaS(后端即服务)可以理解为其他类型的托管服务,例如数据库服务,对象存储服务和日志服务等等。


10

前后端分离≠ 跨域

在Spring Boot+Vue开发中,经常要面临跨域的问题。

与跨域问题密切相关的概念是同源。所谓同源(即指在同一个域)就是两个页面具有相同的协议、主机和端口号。同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。同源策略是浏览器安全的基石。同源策略会阻止一个域的 JavaScript 脚本和另外一个域的内容进行交互。简单来说,网页URL和调用的接口URL不是一个地方的,浏览器就觉得有安全风险,就会尝试阻止使用这个接口的数据。跨域的解决思路包括避免非同源限制、跨源资源共享方案、隐藏跨域等方法。



Spring Boot 好书推荐&直播回顾



识别上图二维码,即可回看精彩直播




03

精彩推荐



文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论