文档章节

【互联网系统架构】前后段分离技术体系演变之路

o
 osc_ogi0qclx
发布于 2019/08/22 16:12
字数 1454
阅读 21
收藏 0

今天算是归纳下互联网系统架构,记录下,作为了解

 

1、前后端未分离模式

前后端未分离时代,页面逻辑处理以及页面渲染全部由后端完成,最有代表性的MVC三层框架,用户发起请求到服务器的控制层(Controller),控制层通过调用模型处理器(Model) 以及渲染视图

(View) 并最终将页面返回给客户端

                                                               mvc架构

上图是整个请求的架构,视图和模型均是放在后端处理,使前端代码无法独立运行,前端开发工程师完成html 等静态代码开发后,将代码传递给后端工程师,后端工程师完成后再发布上线

整个过程开发流程相互牵制,开发效率很低

缺点:此种架构,要求后端工程师关注前端html css 代码等,前端无法单独调试,前后段无法并行开发,后期维护成本比较高,前后端未分离架构存在很多的弊端

 

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

目前仍然有大部分前后段架构属于前后端未完全分离的模式,后端提供restful 风格的api 接口,通俗的讲 (即传输json 数据的http api 接口),前端通过ajax请求调用后端

http api 接口 并完成页面数据的绑定,最终由客户端浏览器完成页面的渲染,此种架构看似做到了前后端完全分离 ,其实不然 后端接口依然需要关注前端ui的展示

后端为前端接口定制化严重,对于多终端场景,后端需要实现多套api 接口,前后端数据以及业务耦合比较紧密,因为定义为此种架构为:前后段未完全分离架构模式

 

 restful 架构使得前后段代码分离开来,前后端可以独立上线,开发效率相对于来说有所提高,整个系统开发流程也有所优化

缺点:前端并没有掌握数据的控制逻辑(无控制层)数据的控制逻辑依然需要在后端代码中实现,致使后端代码过多的关注前端的业务逻辑,客户端需要根据接口返回的数据进行大量的

js 处理,由于动态数据是通过AJAX请求获得的,这种方式也不利于页面的搜索引擎优化

 

3 、前后端分离架构模式

引入NodeJS层作为服务桥接层,NodeJS 由前端工程师负责搭建完成,通过NodeJS服务器在服务器端进行js 脚本,可以让前端人员快速入门搭建自己的服务器

引入NodeJS 可以预先在服务器的内网环境完成大量的前端逻辑计算和页面渲染工作,提升前端的访问性能,如图6 展示前后端完全分离架构模式的数据以及页面的渲染流程

 

 

 

4 前后端技术支撑

目前主要流行的前端主要包含pc 浏览器,小程序,以及移动应用app 移动应用app可以通过原生页面以及内置的webview 等插件渲染h5 页面向用户展示ui 信息

客户端主要涉及到网页浏览器以及原生的app 这些客户端不但可以展示数据,并且还可以存贮数据,尤其是对于移动端app 可以使用强大的SQLite数据库对数据进行持久化存贮

通过客户端的离线存贮可以实现某些场景的离线访问尤其是对于用户的重要数据且更新频次较低的数据,离线存储的意义非常明显。

 

 

 服务器端(后端)的服务器种类主要分为WEB服务器以及应用服务器,WEB服务器主要用来发布静态资源(html、css等静态资源文件),如Nginx服务器、Apache以及CDN服务器等。

WEB服务器对于静态资源发布以及静态文件缓存有极大的优势。应用服务器主要用来发布应用程序代码(ASP.NET、PHP、JAVA等),如Tomcat、IIS服务器等。

WEB服务器一般通过公网VIP或者SLB等方式对外提供外网服务。应用服务器一般只运行在内网环境无法通过外网方式直接访问应用服务器资源,这样也是对应用服务器的一种网络安全保护

 

 

 

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

 

 

 

 

5 、前后端分离存在的问题

高性能问题

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

 

 

高稳定性

 

 如图-14所示,若通过APP内置数据库存储部分接口数据(用户的重要数据,如资产数据,收益数据等),可以实现APP的离线数据访问。

当后端接口服务出现问题,前端依然能够正常展示。本图示只是一个简单的架构示意图,本意是为了说明在设计整体前后端工程时,

同时利用前后端技术优势能够设计出更为稳定的系统架构。

 

上一篇: Hadoop读写mysql
下一篇: 前后端时间转化
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
22分钟前
9
0
Python的__init__和self是做什么的? - What __init__ and self do on Python?

问题: I'm learning the Python programming language and I've came across something I don't fully understand. 我正在学习Python编程语言,遇到了一些我不太了解的东西。 In a method ......

javail
52分钟前
15
0
OSChina 周五乱弹 —— 你大妈还是你大妈

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @watergood:是时候分享一波我的这张纯音乐歌单了,过去的五年多时间里,我陆陆续续地把听到的好听的纯音乐添加了进去,目前一共65首,相信总...

小小编辑
今天
25
0
在Objective-C中生成随机数 - Generating random numbers in Objective-C

问题: I'm a Java head mainly, and I want a way to generate a pseudo-random number between 0 and 74. In Java I would use the method: 我主要是Java头,我想要一种生成0到74之间的伪随......

技术盛宴
今天
13
0
ftp-ftps-sftp的关系

Ftp FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作...

独钓渔
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部