写点什么

前后端分离技术体系

  • 京东数字科技产业AI中心

  • 2020-03-22
  • 本文字数:1908 字

    阅读完需:约 6 分钟

前后端分离技术体系

前后端分离架构演进过程

1、前后端未分离架构模式

前后端未分离时代,页面逻辑处理以及页面渲染全部由后端完成。如最具代表性的 MVC 三层框架。用户发起请求至服务端控制层(Controller),控制层通过调用模型处理器(Model)以及渲染视图(View)并最终将页面返回给客户端。



图 1-MVC 架构(前后端未分离模式)


如图-1 MVC 架构所示,视图与模型均放在后端处理,致使前端代码无法独立上线运行。前端工程师完成 HTML 等静态代码开发之后,将页面代码传递给后端工程师。后端工程师来完成上线发布操作。整个开发流程如图-2 所示,前后端工程师开发流程相互牵制,整体开发效率较低。



图 2-前后端未分离模式下系统开发流程


此种架构,要求后端研发关注前端 HTML、CSS 代码等。前端无法单独调试,前后端无法并行开发,后期维护成本较高,前后端未分离架构存在的弊端如图-3 所示。



图 3-前后端未分离模式存在的缺点

2、前后端未完全分离架构模式

在此以 RESTful 架构为切入点,探讨前后端未完全分离的架构模式,目前仍有大部分前后端架构属于前后端未完全分离的模式。后端提供 RESTful 风格的 API 接口(通俗讲,即传输 JSON 数据的 Http API 接口)。前端通过 AJAX 请求调用后端 Http API 接口,并完成页面数据的绑定,最终由客户端浏览器完成页面的渲染。此种架构看似已经做到了前后端完全分离。其实不然,后端接口依然需要关注前端的 UI 展示,后端为前端接口定制化严重。对于多终端场景,后端需要实现多套 API 接口。前后端数据以及业务耦合较紧密,因此定义为此种架构为“前后端未完全分离架构模式”。



图 4-前后端未完全分离模式


RESTful 架构使得前后端代码分离开来,前后端可以独立上线,开发效率相比未分离架构有所提升,整个系统开发流程也有所优化,前后端未完全分离模式下系统开发流程如图-5 所示。



图 5-前后端未完全分离模式下系统开发流程


此种架构的缺点是,前端并没有掌握数据的控制逻辑(无控制层),数据的控制逻辑依然需要在后端代码中实现,致使后端代码过多的关注前端的业务逻辑。客户端需要根据接口的数据返回进行大量的 JS 处理,由于动态数据是通过 AJAX 请求获得的,此种方式也不利于页面的搜索引擎优化。

3、前后端分离架构模式

引入 NodeJS 层作为服务桥接层,NodeJS 层由前端工程师负责搭建完成。通过 NodeJS 服务器在服务器端运行 JS 脚本,可以让前端人员快速入门搭建自己的服务器。引入 NodeJS,可以预先在服务端的内网环境完成大量的前端逻辑计算和页面渲染工作,提升前端的访问性能。如图 6 所示展示前后端完全分离架构模式的数据以及页面渲染流程。




图 6-前后端完全分离模式

前后端技术支撑

目前主流的客户端(前端)主要包含 PC 浏览器以及移动应用 APP。移动应用 APP 可以通过原生页面、或内置的 WebView 等插件渲染 H5 页面向用户展示 UI 信息。



图 7-客户端应用


客户端主要涉及网页浏览器以及原生 APP,这些客户端不但可以展示数据,并且还可以存储数据。尤其是对于移动端 APP,如可以使用强大的 SQLite 数据库对数据进行持久化存储。通过客户端的数据存储可以实现某些场景的离线访问,尤其是对于用户的重要数据且更新频次较低的数据,离线存储的意义非常明显。



图 8-前端技术方案


服务器端(后端)的服务器种类主要分为 WEB 服务器以及应用服务器,WEB 服务器主要用来发布静态资源(html、css 等静态资源文件),如 Nginx 服务器、Apache 以及 CDN 服务器等。WEB 服务器对于静态资源发布以及静态文件缓存有极大的优势。应用服务器主要用来发布应用程序代码(ASP.NET、PHP、JAVA 等),如 Tomcat、IIS 服务器等。WEB 服务器一般通过公网 VIP 或者 SLB 等方式对外提供外网服务。应用服务器一般只运行在内网环境,无法通过外网方式直接访问应用服务器资源,这样也是对应用服务器的一种网络安全保护。



图 9-后端服务器


后端技术体系包括 JAVA、C#等程序开发语言。MySQL、MongoDB 等数据库技术。Tomcat、IIS 等 web 服务器技术。JSF、JMQ 等处理分布式应用的中间件技术。



图 10-后端技术方案

前后端分离存在问题

1、高性能问题

综上所述,大家已了解前后端分离的架构设计模式以及前后端的相关技术体系,接下来探讨如何充分利用前后端技术提升前后端性能问题。



图 11-访问性能问题



图 12-提高前后端交互性能的解决方案

2、高稳定性


图 13-高稳定需求


如图-14 所示,若通过 APP 内置数据库存储部分接口数据(用户的重要数据,如资产数据,收益数据等),可以实现 APP 的离线数据访问。当后端接口服务出现问题,前端依然能够正常展示。本图示只是一个简单的架构示意图,本意是为了说明在设计整体前后端工程时,同时利用前后端技术优势能够设计出更为稳定的系统架构。



图 14-高稳定性解决方案


2020-03-22 21:058817
文化 & 方法 性能优化 中间件 编程语言 框架

评论 4 条评论

发布
用户头像
wessonwang
“2、前后端未完全分离架构模式”,这里仍然定义为 未完全分离,有点怪异。
实际上 新增NodeJS前后,从人员职责划分角度看,并没有改变什么,只是 后端兼容前端多一些,还是 前端兼容后端多一些 的差别。
如果是 因为后端的接口需要考虑前端UI展示,所以不是 前后端完全分离,
那么,新增了NodeJS后,前端需要理解后端通用接口,那不一样是 未完全分离么?

前后端分离是否分离,应该是看代码是否分离,更合理一些,个人看法哈。
2021-06-26 17:00
回复
用户头像
董董
NodeJS 层的存在,仅仅是把之前模式中的在浏览器中处理的前端逻辑,挪动到了 NodeJS 层,这是为了减少客户端的负担而增加服务器端的工作?但多了一层,便新增了一轮交互(NodeJS层和后端),复杂度上升了。是因为有足够人力资源可以分开写浏览器(App)端,和NodeJS层么?
2020-06-01 05:40
回复
炜炜
不是把客户端的逻辑移到NodeJS层,而是把后端的大量业务逻辑移到NodeJS层,这样后端人力得以释放。
2020-06-27 13:56
回复
dva回复 炜炜
为什么把业务逻辑挪到 nodejs 层? nodejs 更适合做业务逻辑?并不是这样的吧。参考微服务中的 BFF,nodejs 层只做接口聚合、适配、裁剪。这些是简化前端逻辑的处理,这一层也是前端来开发的。
2020-11-18 11:19
回复
没有更多了
  • 41|微前端:从 MVC 贫血模式到 DDD 充血模式

    这节课我们详细看看“微前端”这个近些年兴起的概念。

    2022-12-22

  • Java Web(八)JSP

    Java Server Pages,Java服务端页面

    2022-11-13

  • 【JavaWeb】JSP 学习笔记

    JSP:Java Server Pages,Java服务端页面

    2022-11-27

  • 4 年 Java 开发经验,经常被问到高并发、性能调优方面的问题,该怎么办?

    Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。

    2021-05-17

  • BFF 模式:微服务前端数据加载的最佳实践?

    BFF 有助于简化数据展示,并为前端提供一个目的明确的接口。

    大前端 架构 微服务 操作系统 汽车
  • 一文读懂 NodeJs 知识体系和原理浅析

    Node.js 是一个 JS 的服务端运行环境,简单的来说,它是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。

    2023-03-01

  • 冲云破雾——10 分钟带你了解六大云上服务架构

    讲师介绍: 吕蕴偲,SRE 工程师,就职于国内某云服务商,负责 DevOps 及云上解决方案架构设计,多年云行业相关领域经验。熟悉 AWS 亚马逊云、阿里云等公有云,同时拥有 AWS 解决方案架构师认证及阿里云解决方案架构师认证,对多云云上架构设计部署有相关经验。 问题背景: 随着云上服务的开通,我们的需求从地端转换到了云端,以前 IDC 的那套模式已经不完全适用了。线上的架构搭建与线下的搭建有着本质的区别,线下的部署没有所谓的服务模型区分,可以笼统地归结到“基础设施”服务上来。而云上,有着较为明显的界限划分,即分为 IaaS 基础设施即服务、PaaS 平台即服务和 SaaS 软件即服务,近两年又出现了新兴 FaaS 函数即服务的服务模式。 面对这些复杂且多样的云服务,我们该如何根据不同需求搭建架构设计?本节课,我们将从简单到复杂、从单体到分布式说一说常见的几种架构设计和选择。 内容看点: 几种常见的架构设计模式 云端服务架构选择

    2021-12-24

  • 【HZERO 微服务平台 3】源码分析之 oauth 服务 token 生成、校验、获取信息、传递

    hzero-oauth 服务是基于 spring security、spring security oauth、JWT 实现的统一认证服务中心,支持 oauth2.0 的四种授权模式,授权流程跟标准的 oauth2 流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统 。

    2021-12-13

  • 流式场景下端云一体搭建体系

    随着闲鱼业务的高速增长,业务的数量和复杂度,都急剧增加,研发侧在业务支撑上出现了两个明显的变化...

    架构 最佳实践 方法论 微服务 实时计算
  • 10|微服务设计:微服务架构与演进

    这节课,我们来拆解一下在构建微服务架构的过程中,我们面临的挑战以及需要具备的技术,让你对于微服务架构有更深入的理解。

    2022-11-01

  • 深扒阿里开源的微前端架构 icestark:前端又要变革了吗

    随着微前端技术架构的出现,不断有团队尝试将单体的前端 Web 应用按不同维度进行拆分或者组合,再聚合到一个整体的应用架构下。

    架构 大前端 开源 最佳实践 微服务 阿里巴巴 工程化 性能优化 操作系统 框架 在离线混部
  • 华为云联合信通院发布业界首个《云原生数据库白皮书》

    8月18日,华为云联合中国信通院云计算与大数据研究所发布了业界首个《云原生数据库白皮书》,系统阐释了云原生数据库的发展趋势与现状,从云原生数据库应用场景、技术架构、关键技术以及不同场景下的生产实践,详细介绍了云原生数据库的技术模式,并结合当前

    2022-08-30

  • Java Web(五)Web

    B/S架构:Browser/Server,浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Wb资源,服务器把Wb资源发送给浏览器即可

    2022-11-12

  • Avatar 阿凡达模式项目系统开发逻辑(成熟技术)

    项目简介及模式制度:

    2023-02-14

  • Rust 异步 Web 框架开篇

    2021-09-02

  • 10 分钟带你彻底搞懂门面设计模式

    2022-06-03

  • 42|大前端:通过一云多端搭建跨 PC/ 移动的平台应用

    大前端的出现,可以让数据的存储和数据的获取方式更好地服务于前端的交互和业务的需求。

    2022-12-24

  • 闲鱼源码页面 SSR 最佳实践

    「让每一个用户在最短的时间内看到页面上重要的内容」一直以来都是前端工程师们精益求精的方向。

    大前端 最佳实践 方法论 性能优化 编程语言 框架
  • HTTP2 服务器推送的第一次尝试

    在HTTP1.x中,访问一个页面,浏览器首先获取HTML资源,然后在解析页面时增量地获取其他资源,服务器必须等待浏览器发出请求后才下发页面内资源。而服务器实际上是知道页面内资源有哪些的,如果服务器能够在浏览器显式请求资源之前就将资源推送到浏览器。

    2020-11-17

  • GraphQL 在酒店系统上的实践

    本文介绍Qunar Node 服务产生了什么问题,为什么会出现这些问题,以及为何需要采用 GraphQL 去解决这些问题,是一个值得探究的过程。

    架构 大前端 移动 软件工程 数据库 安全 小程序 最佳实践 工程化 性能优化 编程语言 框架
发现更多内容

高承实:区块链是一个技术结构组织 而不是技术

CECBC

大数据

《程序员修炼之道》- 务实的哲学(1)

石云升

程序员 28天写作

极客时间产品训练营第二周总结

云随心

产品 总结 产品训练营

【面试必备】Swift 面试题及其答案

ios swift

用APICloud开发iOS App Clip(苹果小程序)详细教程

YonBuilder低代码开发平台

小程序云开发 大前端 移动开发 APP开发

从根上理解高性能、高并发(六):通俗易懂,高性能服务器到底是如何实现的

JackJiang

网络编程 高并发 高性能 即时通讯

产品经理训练营第 0 期 第二次作业

孙行者

第0期 产品经理训练营

Postgreshub中文资源网介绍

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

腾讯云数据库品牌升级,大咖解读数据库三大变化

数据君

惊呆了!某东Java大咖的MySQL笔记手册流传出来了,胜过看10本书

Java架构之路

Java 程序员 架构 面试 编程语言

产品思维和产品意识

ALone

测试一下

TJJ

十年磨一剑,腾讯云数据库品牌重磅升级, “企业级分布式数据库TDSQL”来了!

数据君

极客时间产品训练营第二周作业

云随心

产品 第二周作业 产品训练营

红河州加速区块链等新技术与实体经济的深度融合

CECBC

数字经济

搞定万亿级MySQL海量存储的索引与分表设计实战

Java架构师迁哥

阿里P8亲测能实战落地的SpringCloud开发笔记已开源

996小迁

Java 程序员 架构 面试 SpringCloud

Vue.js笔试题解决业务中常见问题

我是哪吒

程序员 面试 Vue 大前端

LeetCode题解:389. 找不同,ASCII码求和,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

第二周-作业-胡赵凯

hisun胡

产品经理 产品经理训练营

目标岗位差异化对比

Geek_6a8931

应对新冠病毒传播-粤政协委员建议构建公共卫生区块链平台

CECBC

区块链 公共卫生

常见运维监控系统的技术选型

OpsMind

运维 监控系统

七大步骤、备战60天,4面拿下字节跳动offer:时间规划+知识点+画脑图+做笔记+看书+看视频+刷题刷题

Java 程序员 面试

Flink SQL 在字节跳动的优化与实践

Apache Flink

flink

懂点EXCEL就行!教你利用Python做数据筛选(上)

智分析

Python Excel 数据清洗

图解 | 原来这就是TCP

程序员 网络协议 架构师

深圳程序员自谋生路的2020

鸠摩智首席音效师

开源 程序员 在线教育 创业者 深圳

品牌升级后,TBase更名为TDSQL和TDSQL-A,CynosDB更名为TDSQL-C

数据君

挑战前端知识点HTTP/ECMAScript

我是哪吒

大前端 HTTP ES6

连肝7个晚上,总结了计算机网络的知识点!(共66条)

我是哪吒

程序员 面试 浏览器 计算机网络 HTTP

前后端分离技术体系_文化 & 方法_京东数字科技产业AI中心_InfoQ精选文章

玻璃钢生产厂家淮南玻璃钢外壳价格金昌玻璃钢茶几加工商洛玻璃钢休闲椅制造呼和浩特玻璃钢树池坐凳定制肇庆玻璃钢花坛加工宜昌玻璃钢前台信阳玻璃钢树池厂许昌玻璃钢家具批发澳门玻璃钢浮雕定制淮北玻璃钢产品多少钱延安玻璃钢座椅厂家直销滨州玻璃钢花盆厂晋城玻璃钢花瓶多少钱北京玻璃钢医疗外壳制作柳州玻璃钢装饰工程厂家龙岩玻璃钢茶几加工辽阳商场美陈大连玻璃钢外壳公司包头不锈钢雕塑公司武威玻璃钢外壳厂家直销成都玻璃钢雕塑公司眉山玻璃钢树池坐凳哪家好白城玻璃钢花盆定制四川玻璃钢花池批发贺州玻璃钢装饰造型批发石家庄玻璃钢前台制作孝感玻璃钢装饰工程多少钱九江玻璃钢休闲椅厂家直销广安玻璃钢沙发制作阳泉玻璃钢坐凳公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化