你是如何看待前后端分离的?

首先看看前后端分离是什么?

  “前端”通常指的是,相对来说更接近用户的一端,例如:APP,网页、桌面程序等,在现实开发中大部分情况可以理解为“客户端”;

  “后端”相对来说就更泛化了,可以理解为是为前端提供服务的一端。

  ”分离“顾名思义就是将”前端“和”后端进行分开“,但是这里的分开主要从下面几个纬度进行分离

    1:架构分离,前端不需要依赖后端架构同时后端也不需要知道前端使用何种架构

    2:人员分离,前端后端使用的技术相互之间根部不需要相互了解完全可以在做到透明(当然相互了解会更好)

    3:工作分离,基于项目或者产品的单个功能的横向进行工作分离,任务划分更细

    4:关注点分离,前端偏向用户,后端偏向系统本身

下面分别是一体式web架构示意图和前后分离式web架构。

一体式 Web 架构示意

前后分离式 Web 架构示意

为什么要做前后端分离,它到底有什么好处?
  前后端的分离也实现了前后端架构的分离,带来的好处有:

    整个项目的开发权重往前移,实现真正的前后端解藕,动态资源和静态资源分离,提高了性能和扩展性。

    前端静态化

      前端有且仅有静态内容,再明确些,只有HTML/CSS/JS。
      其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装。
      前端内容的运行环境和引擎完全基于浏览器本身。
    后端数据化

      后端可以用任何语言,技术和平台实现。
      遵循一个原则:只提供数据,不提供任何和界面表现有关的内容。
      统一API接口,接口完全可以共用。
      提供的数据可以用于任何其他客户端(如IOS,安卓,PC,微信小程序等)。
      通过一些代码重构,就可以大量复用接口,提升效率。
    平台无关化

      前端3大技术(HTML/CSS/JS)本身就是平台无关的。
      后台连接部分的本质是实现合适的RESTful接口和交互Json数据,就这2者而言,任何技术和平台都可以实现。
      前后端交给不同的人来编写,明确划分职责,发现bug的时候可以快速定位。
      vue.js等框架编写前端时,会比之前写jquery更简单快捷。
    架构分离化

      前端架构完全基于HTML/CSS的发展和JS框架的演变,由于前台是纯静态内容,大型构架方面可以考虑向CDN方向发展.
      后端构架几乎可以基于任何语言和平台的任何解决方案,大型构架方面, RESTful Api可以考虑负载均衡;而数据,业务实现等可以考虑数据库优化和分布式。
      在大并发情况下,可以同时水平扩展前后端服务器。
      即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已,当然现在一般是服务器集群,少有出现这种现象。
    前后端流量大幅减少

      减少后端服务器的并发压力,除了接口以外的其他所有http请求全部转移到前端服务器上。
      页面不再是全局刷新,而是异步加载,局部刷新,减轻压力。
    表现性能的提高

      页面性能,第一次获取的确会有些损失。
      后续使用这个页面,性能优势就完全体现了,页面的绝大部分内容都是本地缓存直接加载,远程获取的仅仅是1-2个10K的内容,其加载时间百毫秒内,这和本地页面几无区别,其前端加载和响应速度得到非常大的提高。
    安全性方面的集中优化

      前端静态化以后,一些注入式攻击在分离模式下被很好的规避。
      而后端安全问题集中化了,主要考虑处理RESEful接口的安全。
      安全架设和集中优化变得更明确和便利。

原文地址:https://www.cnblogs.com/LY69/p/10265225.html

时间: 2024-11-02 16:51:21

你是如何看待前后端分离的?的相关文章

前后端分离的一些尝试

背景 目前使用SpringMVC框架进行开发,用户访问controller的url,controller收到页面数据后分发给serverice做处理,处理完后在controller中根据页面所需要的数据进行整合,最后将打包好的信息发给指定的页面. 根据上图我们可以看到,数据的整合是在controller层上做处理的,而页面则对整合的数据进行对应的显示,两部分需要对应好,如果增加一个对应的控件涉及到后台的数据,则页面和后端都需要修改,即使该空间的service已经存在,也需要在controller

利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有2个问题不可避免:第一是前端调用后台接口时的跨域问题(因为前后端分开部署):第二是前端脱离后台服务后无法独立运行.本文总结最近一个项目的工作经验,介绍利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境的实践过程,希望能对你有所帮助. 注:

前后端分离的方法

网站前后端分离的方法 如何进行前后端分离: http://blog.csdn.net/github_26672553/article/details/51864112 https://segmentfault.com/q/1010000004494530 解释了前后端的分离方法 http://www.csdn.net/article/2015-10-25/2826033

[转]从MVC到前后端分离

从MVC到前后端分离 来源:csdn 发布时间:2015-10-26 阅读次数:1680 1. 理解MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的Java Bean,包含一系列的成员变量及其getter/setter方法.对于视图而言,它更加偏重于展现,也就是说,视图决定了界面

前后端分离

Swagger - 前后端分离后的契约 前后端分离 按照现在的趋势,前后端分离几乎已经是业界对开发和部署方式所达成的一种共识.所谓的前后端分离,并不是传统行业中的按部门划分,一部分人只做前端(HTML/CSS/JavaScript等等),另一部分人只做后端(或者叫服务端),因为这种方式是不工作的:比如很多团队采取了后端的模板技术(JSP, FreeMarker, ERB等等),前端的开发和调试需要一个后台Web容器的支持,从而无法将前后端开发和部署做到真正的分离. 通常,前后端分别有着自己的开发

关于大型网站技术演进的思考(十七)--网站静态化处理—满足静态化的前后端分离(9)

前后端分离的主题虽然讲完了,但是前后端分离的内容并没有结束,本篇将继续前后端分离的问题,只不过这次前后端分离的讲述将会围绕着本系列的主题网站静态化进行.在讲本篇主题之前,我需要纠正一下前后端分离主题讲述中会让朋友们产生误导的地方,这种误导就是对时下流行的一些前后端分离方案(没有使用nodejs的前后端分离方案)的评价问题,其实本人任然觉得不管什么样的前后端分离方案只要成功被实施,并且产生了良好的效果,那么它就是一个成功的前后端分离方案,前面我以一种批判的角度讲述这些前后端分离方案,并不是想在否定

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs. 语法错误:失去右括号)在参数列表后面,在.....\views\user\index.html(在这个路径中的index.html)中当编译ejs时. 分析:这个时候应该是模板引擎ejs出现问题,但是ejs已经是一个写好

谈谈渲染,玩玩nginx——前后端分离,转发请求到Tomcat的尝试

一.谈谈"渲染" 相信好多人都挺听过"渲染"这个词,但不清楚它是什么意思?前端开发以为这是后端的活儿,后端开发以为是前端的事儿,推着推着就不了了之.其实渲染很简单,不说概念,直接举例: 1. 后端渲染:以JSP为例,可以分成三步 a.编写标签或Java代码(可以称之为模板) b.在JSP编译阶段被转换成Servlet编译为Servlet Class c.执行编译后的代码,将响应(模板执行结果)返回给页面 优势:减少前端工作,前端只需要设计纯页面,其他的都由后端来做:

Restful and 前后端分离

swagger--API rest---敏捷->BDD->用户故事->验收条件->用户场景测试->Spec 测试->自动化测试->持续集成->自动部署->dev&ops完了,用户场景测试理论上说可以代替单元测试 正是因为采用Rest架构,才使得前后端完整分离. - 前后端分离了才能写好测试,才能更好的保证质量- 前后端分别进行独立的开发,测试,部署(没错,可以独立部署,独立发布)- 更简单,维护成会降低 回到你的具体问题,如何做session控