Web应用架构的新趋势---前端和后端分离的一点想法

高性能低耦合,前后端分离的低代码平台赞爆了 编者按:据说前后端分离很好用?那么实现前后端分离的低代码平台怎么样呢?本文详细介绍了前后端分离的概念及其作用,并进一步指出的前后端分离架构在低代码平台中的应用。 概要: (1)前后端分离是什么 (2)为什么需要前后端分离 (3)前后端分离的低代码平台 前后端分离是什么 简而言之,前后端分离指的是一种系统架构,也可以用来描述一种开发模式。如果想更加详细了解前后端分离的系统架构之前,我们需要先了解几个概念。 C/S架构 即Client/Server(客户端/服务器)结构,它是一种网络体 阅读详情

转自:http://www.cnblogs.com/sharpxiajun/p/3531665.html


最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指服务端)。

  Web前端现在是一个独立的技术工种,这个工种的产生主要是针对互联网行业的需求,我在以前的文章里曾经讲到过,一个大型互联网网站,例如想淘宝网,它绝对不是一个Web项目,而是一群web项目的集合,那么如果不在前端进行整合,这么多web项目前端开发一定存在大量重复劳动,并且运维时候也存在难以统一管理的问题。本文假想一个面对需要前端资源整合的组织,如何做到前后端分离的解决思路。本文详情如下:

 

(一) 前后端分离的目的和作用

 

  做Web开发也可以说是B/S架构开发,B端和S端从技术体系角度而言异构性很大,换而言之就是B端使用的技术和S端使用的技术不适于同一个体系,这样的结果导致实际开发中,很难做到专业分工,如果项目开发过程中管控不到位,这样的问题可能会影响到整个项目的开发质量,因此前后端分离的目的之一就是要做到专业化分工,提高项目的质量和开发效率。

 

  随着技术的发展,当下的Web开发形势已经和以前有了很大的不同,早期的Web项目是一个封闭的项目,用户从浏览器里看到的页面直到后台数据库都是在一个项目里集成的,而现在Web系统的规模越来越大,中大型的Web系统是一个开放式的系统,开放型的系统用户在浏览器发起的请求可能会转发到外部的系统里进行处理,或者是本地的系统和外部系统一起完成请求的处理,此外有的请求可能不会直接请求数据库,而是请求缓存服务器,这些变化几乎都是发生在Web系统的服务端,前后端耦合度很高的Web系统服务端的复杂度提升必然带来了Web前端的复杂度的提升。因此Web前端从系统架构的角度也需要更加专业的管控,管控的作用之一就是前后端进行分离,降低前端对服务端的依耐性。

 

  富客户端应用的普及导致Web前端技术开发更加专业化,Web前端工程师成为一个独立的技术岗位,Web前端开发技术的难度也越来越高,前后端的分离就是为Web前端开发营造一个良好的开发环境,不要让前端工程师被一些不可控的外在因素所影响(例如:前后端的耦合性),最后导致前端不能专心致志做出更加好的作品。所以,前后端分离是让前后端更加专业化,在技术和管理上将前端角色更加明确,更深入的挖掘前端开发的价值。

(二) 现有系统架构给前后端带来的问题以及解决方法

 

  上图是目前大部分系统的架构图,虽然有些系统采用分布式架构,层与层之间使用了远程调用框架,但是本质上都逃不开上面这个架构设计。这张图是一张比较合理的图,在实际开发里最常发生的事情就是控制层(Control)越过服务层(Service)直接处理下面的资源。

  前后端耦合的问题主要发生在控制层(Control),控制层是前端和服务端交互的边界,但是在开发过程中控制层(Control)和服务层(Service)常常混淆不清,这就是前后端耦合度高的重要原因。

  因此要前后端解耦,就是要划清控制层的边界,控制层到底该属于前端还是服务端,在MVC模式里控制层作用是调度,控制层不是写业务逻辑的地方,因此将大量业务逻辑写到控制层其实是违背了MVC模式的思想,同时控制层是前端和服务端通讯的桥梁,其实控制层是参入了前端的工作任务,既然控制层要剥离业务操作同时控制层也要参入前端应用的开发,那么将控制层归为前端的一部分是完全合情合理合规的。

  把控制层剥离了业务逻辑处理可能会让人不知道如何开发了,我觉得有这种想法的人是开发时候没有理解透MVC模式思想,编程随意性大养成了坏习惯,这个就需要这些人一点点去适应技术新趋势的发展。

  前后端分离的终极目标应该是前端和服务端是完全独立的项目,前端项目包含上图里的浏览器和控制层,服务端项目包括服务层、DAO层等等,前端项目和服务端项目以高效的远程调用框架做通讯介质,项目开发时候前端项目做前端的事情,服务项目做服务端的事情,这样就让服务端开发的人员没有机会在控制层乱写代码了,保证了Web前端环境的纯粹性,最后生产发布也要独立部署,这样就达到了前后端真正解耦,但是前后端的沟通机制也是不可或缺的,我觉得它们之间的沟通使用高性能的远程调用框架,前后端相互约定通讯报文格式。.

  其实不管服务端还是前端宏观流程无非是输入数据à数据处理à输出数据,但是服务端要把心思花在数据处理上,前端要更多关心的是输入输出数据时候的用户体验操作,服务端开发最大的问题就是违背MVC原则,代码编写的随意性,而前端不管出于安全还是性能考虑,最好是尽量少牵涉业务。前端和后端通讯层的独立,会将前后端进行真正的解耦,前面我讲到前后真正问题就是前端和后端技术路线不一致,但是传统Web开发里前后端又要融为一体,这就导致前后端很难做到专业化分工,对于前端应该尽量弱化通讯级别的开发工作,前端通讯编程只要知道调用哪个接口,传什么参数,怎么处理响应信息就行了。这样就能让前端和后端实现真正的专业化。

  做到了这些,就不会发生开发时候前后端边界不清的问题了。

(三) 前后端分离的一些想法

  本文主题应该是前后端分离,我上面的建议是个彻底方案,要革以前系统的命,对存量系统那该如何处理,答案还是重构代码,想方设法逐步减少已经发现的前后端耦合度高的问题,这个跟我之前的建议就是小重构和大重构的区别,如果有人觉得我上面建议合适,前端组应该马上提供一套这样的框架出来,这样后面的新系统就不会在循环前面的错误了。我觉得搭建这样的框架不会太复杂的。

  我上面的前后端分离的目的就是将前端资源整合为一个整体,理清前后端的边界,这些做完后,前端组里该如何提升自己的能力了?

  这时候要让前端的东西项目化,工程化,前端技术不能再当做开发者的玩具,它也是需要大量的系统架构,开发规范,自动化压缩混淆,自动化发布,前端监控和分析,前端优化等等。

  上面这些问题都很重要,也很专业,如果我有机会能参入这样的事情,我还有个特别的建议,具体如下:

  在一个企业内部,Web前端的组件,不管这个组件是UI层级,还是javascript开发层级,都脱离不了该企业业务产品的模式,其实看看像网易,新浪这样的门户网站的前端应用组件,它们用于做门户很合适,但是用它来做企业应用软件可能就不是太好使用,因此对于组件要有一个清晰的认识,我觉得可以把组件按业务场景分类,这里我可以举个例子,如果这个企业有给门户使用的组件,而这个组件很适合门户,应该把它归为门户组件,如果某些组件适合做网站后台管理的,那么就列为后台管理组件,如果某些组件能跨多了业务场景则标记为通用组件。

  做分类的原因是为了理清组件的应用边界,这样我们可以有针对性的积累和完善这些组件,有意识的开发相关的组件,最终形成一个针对某个业务组件的组件仓库,这样等新需求过来,Web前端的项目经理或Web前端的技术经理可以通过场景分析该需求需要使用那些现有的技术,需求里的那些场景是要进行开发,新场景里有没有新开发的代码能生成新的组件,这就可以做到有计划有次序的积累。

  Web前端的核心人员应该花更多精力去设计、积累、整理各种组件,通过实际业务需求去完善和丰富这些组件,最终达到组件可以覆盖到全公司绝大多数场景,最终通过组件积累形成完善的Web前端开发规范,这样的规范覆盖面广更加易于操作,对于企业而言Web前端开发流程就可以做到标准化,从而达到简单培训一些技术能力不高的开发人员就能完成相关的开发任务,同时也让Web前端核心人员也能很好的把控项目的质量和进度。

  以上就是我的一些前后端分离的想法,它是一个很宏观的想法,没有太多技术实现细节,如果这个想法如果针对存量系统,的确是一个颠覆性的方案,如果Web前端允许一切重头来做,我个人觉得这还是很好的一个思路。前后端分离是Web前端专业化的万里长征第一步,如果这一步做好,前端就有一套专属自己的优质环境,那时候Web前端就会有更大的余力做更优秀的工作,这就是我的愿景。

应用架构发展趋势.pdf 文档主要是详细的描述了当前世界流行的五中应用架构的风格,对于了解每种风格的作用和挑战以及具体的含义和形式很有帮助 立即下载

相关推荐

部署资源管理系统chemx

资源管理系统的部署教程

weixin_40784215的博客 822

系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

  最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指服务端)。   Web前端现在是一个独立的技术工种,这个工种的产生主要是针对互联网行业的需求,我在以前的文章里曾经讲到过,一个大型互联网网站,...

weixin_34026484的博客 350

Jetson Nano 【1】入手开箱、烧系统

类似于半开箱哈哈 怀着小期待的心情,屁颠屁颠跑到村口领快递,拿到了这个香喷喷的Jetson Nano 开发板 开箱: 由于太激动了忘记拍点啥,于是在最后留了张全家福 板子的结构: 我觉得这个有必要记录一下,于是去官方文档拿了张图来:官方文档传送 1=SD card 的卡槽,位于第二层板子的背部,也就是大风扇屁股位置 2=40针扩展接头(还没开用) 3=USB的供电口,根据大佬测试(某哩...

椰子奶糖的博客 4194

SpringBoot+Vue实现前后端分离灾情救援系统

本系统采用B/S模式,后端部分基于Java的springboot框架进行开发。前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库,使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。

分享技术热点,看天下大事 3879

IBM System x3650 M5 IMM配置

1、IMM基本介绍 IMM,全称是Intel Mobile Module是IBM服务器上的集成管理模块,该模块是独立于服务器系统,可以通过一个单独的IP地址,使用Web和虚拟端口方式直接启动、停止和管理远程服务器,即使主板、处理器或者内存故障导致主机无法启动,也依然可以远程管理服务器,可以远程直接操作启动画面和服务器工作界面。 2、IP地址配置 2.1 通过Web方式修改IP地址 IBM服...

血饮渊虹的博客 4万+

微信小程序URL Link全解析:从生成原理到实战应用(附Java代码)

本文深入解析微信小程序URL Link的生成原理与实战应用。URL Link是微信官方提供的智能路由协议,通过中间页实现外部链接安全跳转至小程序指定页面。文章详细阐述了其权限模型、环境版本差异及跳转机制,并提供了包含令牌管理、异常处理和性能优化的健壮Java实现方案,助力开发者构建高可用的链接生成服务。

weixin_29327525的博客 1216

详细了解前后端交互B/S,细的不能在细了

详情前后端交互B/S 一 先了解软件的架构 C/S-客户端,服务器 客户端就是指用户,谁用是谁。 服务器就是负责处理软件的业务逻辑–就相当于网络。 我们一般用的都是c/s架构。Eg:qq.微信等 特点: 1 使用前必须安装, 2 软件更新时,服务器和客户端同时更新 3 C/S架构的软件不能跨平台使用–开发成本高 4 C/S架构的软件客户端和服务器通信采用的是自有协议,相对来说比较安全。 B/S-...

lzfengquan的博客 4168

RK3568平台(电源篇)电源域IO配置

在kernel之前需要修改电源域,主控电源域的IO电平要与对接外设芯片的IO电平匹配,还要注意软件的电压配置要跟硬件的电压一致,否则,最坏的情况可能会导致IO的损坏。其实就是管理 IO 输出的电平;假如硬件上 IO 电源域配置为 3.3V,则 IO 输出最大电平为 3.3V;同理 IO 电源域硬件配置为 1.8V,则 IO 输出最大电平是 1.8V;这样有利于 IO 电平的灵活配置;

weixin_49303682的博客 3478

基于vue搭建的B/S架构的后台

前言 本项目使用了vue2.0实现前端,node + mysql完成后端。 项目简介 本项目前后端分离,前端基于Vue2.0+Vue-router+Vuex+Element-ui+Axios,后端基于Node.js+Mysql实现。 前端包含以下页面:登录、用户列表、角色列表、权限列表、商品列表、分类参数、订单列表、统计图表页面。 实现了商品的展示、商品分类查询、关键字搜索商品、商品详细信息展示、登录、用户订单。 后端采取了MVC模式,根据前端需要的数据分模块设计了相应的接口、控制层、数据持久层。 技术栈

www930942的博客 3338

行测测评——矩阵、圆形、环形三角图形数列推理解题技巧

写在前面:各大公司的测评做的让人眼花缭乱,很多题型都是第一次见,比如逻辑关系、信息推理,最难的要属找规律的数字推理了。根据B站UP主刘文超老师的课程,记录一下解题技巧。感谢UP主的无私奉献,原地址连接:https://www.bilibili.com/video/BV1it411M7o2?t=528&p=7 解题技巧: 从图形的上下、左右、交叉 角度进行尝试求解 基本法则是“加、减、乘、除、倍数、次方”六种形态。 一、有心数阵 解题技巧:周边数字通过某种运算得到中间数字 1.周边数..

涵盖了计算机专业基础知识、数学建模相关实践、复杂网络论文研究、LeetCode算法刷题经验、C语言开发经验、前端Vue、React框架开发实战相关知识 8642

腾讯滑块验证码防水墙 tdc.js 补环境实录

腾讯滑块验证码破解研究摘要 本文记录了破解腾讯防水墙滑块验证码(tdc.js)的全过程。研究重点包括: 流程分析:通过抓包分析验证码完整链路,识别出关键参数collect和eks需从tdc.js虚拟机获取 环境模拟:采用渐进式补环境方法,针对字节码虚拟机特性构建完整的window对象,包括navigator、screen、canvas等API的精确模拟 核心破解:成功调用TDC.getData()和TDC.getInfo()获取关键参数,解决POW计算和滑块缺口识别问题 优化调整:针对errorCode 5

码王吴彦祖的博客 225

系统架构:Web应用架构的新趋势---前端和后端分离的一点想法(转)

原文地址:http://www.cnblogs.com/sharpxiajun/p/3531665.html,感谢博主 最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指...

weixin_30248399的博客 115

微信小程序 - request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task请求报错

微信小程序请求接口,报request:fail errcode:10011是什么原因,uniapp微信小程序request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task,微信小程序wx.request常规访问接口,有个别用户的接口请求频繁报错,UniApp 微信小程序uni.request请求接口报错:request:fail errcode:10011 的原因分析与解决方案,苹果ios,安卓

🏆 前端领域优质创作者 4566

Web应用架构的新趋势 前后端分离的想法

最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指服务端)。   Web前端现在是一个独立的技术工种,这个工种的产生主要是针对互联网行业的需求,我在以前的文章里曾经讲到过,一个大型互联网网站,例如

u013140188的专栏 818

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

系统架构:Web应用架构的新趋势 前后端分离的想法

最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指服务端)。 Web前端现在是一个独立的技术工种,这个工种的产生主要是针对互联网行业的需求,我在以前的文章里曾经讲到过,一个大型互联网网站,例如想淘

墨者侠客 1486

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

前后端分离的想法

最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现在应该考虑的是前端和后端的分离(注意:这里的后端是指服务端)。 Web前端现在是一个独立的技术工种,这个工种的产生主要是针对互联网行业的需求,我在以前的文章里曾经讲到过,一个大型互联网网站,例如

小老虎 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 解析微服务架构
下一篇: 前后端分离之Web前端架构设计
andybbc
博客等级 码龄11年 64粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值