`
骑猪逛街666
  • 浏览: 141825 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

前后端分离状态下的工作与交互

阅读更多
阅读原文请点击:[url]http://click.aliyun.com/m/23250/ [/url]
摘要: 在业务逻辑复杂的系统里,我们最怕维护前后端混杂在一起的代码,因为没有约束,M-V-C每一层都可能出现别的层的代码,日积月累,完全没有维护性可言 虽然前后端分离没办法完全解决这种问题,但是可以大大缓解。因为从物理层次上保证了你不可能这么做

为什么要前后端分离
前后端职责不清
在业务逻辑复杂的系统里,我们最怕维护前后端混杂在一起的代码,因为没有约束,M-V-C每一层都可能出现别的层的代码,日积月累,完全没有维护性可言

虽然前后端分离没办法完全解决这种问题,但是可以大大缓解。因为从物理层次上保证了你不可能这么做

开发效率问题
淘宝的Web基本上都是基于MVC框架webx,架构决定了前端只能依赖后端。所以开发模式:前端写好静态demo,后端翻译成VM模版,这种模式的问题就不说了,被吐槽了很久

直接基于后端环境开发也很痛苦,配置安装使用都很麻烦。为了解决这个问题,我们发明了各种工具,比如VMarket,但是前端还是要写VM,而且依赖后端数据,效率依然不高。另外,后端也没法摆脱对展现的强关注,从而专心于业务逻辑层的开发

对前端发挥的局限
性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作才能碰撞出火花,但由于后端框架限制,我们很难使用Comet、Bigpipe等技术方案来优化性能

怎么做前后端分离?
前端:负责View和Controller层

后端:负责Model层,业务处理/数据等

前后端人员双方约定好接口的数据格式,比如:前端需要调用一个用户信息的接口,数据格式为{name:”,gender:”},那么,后端人员只需要告诉他一个接口url(如:http://192.168.1.2:8080/pro/userInfo),并且将这个接口返回前端想要的数据即可,至于后端人员怎么实现这个接口,前端人员并不关心!
前端页面用ajax解析url,获取数据进行页面端的处理,然后再按照上述地址返回给后端,就想APP和后台接口对接是一个道理。
至于前端人员要用这个接口来做什么,后端人员同样不需要关心!双方都只专注于自己需要实现的业务逻辑

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

后端数据化
后端可以用任何语言,技术和平台实现,但它们必须遵循一个原则:只提供数据,不提供任何和界面表现有关的内容.换言之,他们提供的数据可以用于任何其他客户端(如本地化程序,移动端程序)

平台无关化
前端3大技术本身就是平台无关的,而后台连接部分的本质是实现合适的RESTful接口和交互Json数据,就这2者而言,任何技术和平台都可以实现

构架分离化
前端架构完全基于HTML/CSS的发展和JS框架的演变,与我们耳熟能详的后台语言(如C#, Java, NodeJs等)完全无关. 由于前台是纯静态内容,大型构架方面可以考虑向CDN方向发展.

后端构架几乎可以基于任何语言和平台的任何解决方案,大型构架方面, RESTful Api可以考虑负载均衡;而数据,业务实现等可以考虑数据库优化和分布式

但总而言之,前后端的分离也实现了前后端构架的分离

前后端流量大幅减少
我们知道,前后端流量的大头是HTML/JS/IMG资源,而数据仅仅是小头,资源占到100K以上的页面不算大,但数据充其量10K左右,比如一个1万条记录的数据经过压缩也仅仅在100K左右,而一个稍大的JS库或图片就不止这些.

流量的减少在于”前端静态化”这个规则,在第一次获取以后静态资源会被浏览器缓存,即使浏览器继续轮询,服务端也会返回一个非常小Not Modified响应,流量几乎可以忽略不计.

举例说明,在一个页面为100K,数据为10K的页面中,100次请求的流量是100K+10X100 = 1.1M. 显而易见,其流量是大幅低于每次获取完整HTML的情况的

表现性能的提高
有人质疑这种模式的页面性能问题,其实情况没有那么悲观: 第一次获取的确会有些许损失,但我认为,损失微乎其微,一个HTML页面的加载,同时加载10多个几十K的JS, Image的情况非常常见,再多1-2个10K的Json也并非沉重负担.

但后续使用这个页面,性能优势就完全体现了,页面的绝大部分内容都是本地缓存直接加载,远程获取的仅仅是1-2个10K的内容,其加载时间百毫秒内,这和本地页面几无区别,其前端加载和响应速度得到非常大的提高是显而易见的.

前后端平台无关和技术无关
前端是纯HTML技术,前端人员只需要记事本就可以开发并非一句”戏言”,而后端能够实现RESTful的框架和平台比比皆是, 完全可以选择更适合团队,人员和公司的技术路线而不在纠结于平台和技术的选择

安全性方面的集中优化
前端静态化以后,前端页面攻击几无可能,一些注入式攻击在分离模式下被很好的规避; 而后端安全问题集中化了,仅仅只处理一个RESEful接口的安全考虑,安全架设和集中优化变得更明确和便利

开发的分离和构架的分离
也许很多团队还是1个开发人员全包前后端的模式,但前端的要求越来越高,前后端人员的需求分化日益明显,一旦系统上级别上档次,其分离的需求必将出现.

前后端人员的完全分离可以使得他们在各自领域进一步求深求专,成为更加专业的高手;另外,前后端的构架也可以分开考虑和架设,前端构架就能集中考虑性能和优化,而业务,安全和存储等问题就能集中到后端考虑
阅读原文请点击:http://click.aliyun.com/m/23250/
分享到:
评论

相关推荐

    layui+thinkphp前后端分离.rar

    在前后端分离的架构下,Layui作为前端框架负责展示用户界面,处理用户交互,而ThinkPHP作为后端框架,主要负责数据处理、业务逻辑以及API接口的提供。两者通过Ajax进行通信,实现了数据的动态加载和更新,从而实现了...

    传统MVC架构和前后端分离架构模式对比

    - **前后端分离架构**:前端直接与后端交互,需要采取更多的措施确保数据传输的安全性。 #### 六、结论 MVC架构与前后端分离架构各有特点和应用场景。对于需要高度定制化的用户界面且对用户体验要求较高的项目,...

    《Vue Spring Boot前后端分离开发实战》源码Vue+Spring Boot前后端分离开发实战教学课件(PPT)

    3. **前后端分离**:这是一种设计模式,将应用分为两个部分:前端负责用户交互,后端负责业务逻辑和数据处理。这种分离提高了开发效率,使得前端和后端可以独立开发和部署,同时提升了应用的可维护性和扩展性。 4. ...

    前后端分离项目ppt

    【标题】"前后端分离项目ppt"涉及到的核心技术与实践 在现代Web开发中,"前后端分离"已经成为一种常见的架构模式,它旨在提高开发效率,优化用户体验,并简化项目的维护。这种模式下,前端和后端开发人员可以独立...

    前后端分离集成cas

    在这个前后端分离的项目中,Vue.js用于构建前端页面,与后端通过Ajax进行通信,实现动态交互和数据展示。 集成CAS(Central Authentication Service)是为了实现单点登录(Single Sign-On, SSO)。CAS是一个开源的...

    前后端分离项目中引入activiti工作流引擎步骤

    下面我们将详细探讨在前后端分离项目中如何引入和配置Activiti工作流引擎。 1. **了解Activiti** Activiti是基于BPMN 2.0标准的轻量级工作流引擎,它提供了一整套流程定义、执行、监控和管理的工具。通过Activiti...

    vue+element不前后端分离资源包

    在前后端分离架构中,前端和后端通过API接口进行通信,而在这个资源包中,前端可能直接与后端的某些服务或数据源进行交互,而不是通过HTTP请求。 资源包中的“plugins”文件夹通常包含了项目中使用的各种插件或者第...

    前后端分离项目.zip

    在IT行业中,前后端分离是一种常见的开发模式,它将应用程序分为两个主要部分:前端和后端,各自专注于用户交互和业务逻辑处理。本项目“前后端分离项目.zip”是一个基于Maven构建的工程实例,旨在展示如何实现这种...

    前后端分离:springboot+vue

    在"前后端分离"的架构下,前端与后端之间通过HTTP或HTTPS协议通信,通常采用RESTful API接口进行数据交换。前端负责展示和交互,而后端负责数据处理和业务逻辑。这种分离使得前后端可以独立开发和部署,提高了开发...

    springboot3+ vue3前后端分离项目搭建代码

    在本项目中,我们主要探讨的是使用Spring Boot 3与Vue 3进行前后端分离的开发实践。Spring Boot是Java领域的一个微服务框架,而Vue 3则是一种现代的前端JavaScript框架,两者结合可以构建高效、可维护的Web应用程序...

    thinkphp+jwt实现前后端分离

    在现代Web开发中,前后端分离是一种常见的架构模式,它提高了开发效率,增强了系统的可维护性和可扩展性。本项目是基于Thinkphp6框架和JWT(Json Web Token)技术实现的前后端分离示例,旨在帮助开发者理解如何在...

    Rest风格前后端分离 web项目demo

    **前后端分离与REST风格** 在现代Web应用开发中,前后端分离已经成为了一种主流模式。这种模式将前端用户界面的开发与后端业务逻辑的处理分离开来,以提高开发效率,提升用户体验,同时也更好地适应了敏捷开发的...

    restful前后端分离api接口文档模板

    为了实现这种分离,RESTful API作为前后端交互的标准协议被广泛采用。本文档旨在通过一个具体的案例——“图书模块”的API接口文档来详细介绍RESTful API的设计原则及其实现细节。 #### 二、文档修订记录 - **版本...

    springboot+vue前后端分离开发项目源码

    开发者可以通过阅读源码,理解SpringBoot如何与Vue.js协作,学习如何实现登录验证、数据传输、错误处理以及前后端的交互流程。此外,还可以深入研究如何优化性能,如使用缓存策略、接口分页、异步处理等。这个项目...

    SpringBoot + Shiro实现前后端全分离接口安全框架

    在实现前后端全分离的场景下,前端和后端通过JSON交换数据,安全策略通常由后端实现。以下是SpringBoot和Shiro结合实现接口安全的关键步骤: 1. **配置Shiro**:在SpringBoot应用中引入Shiro依赖,然后配置Shiro ...

    前后端分离RuoYi-Vue.zip(老版本)

    前后端分离是指在Web应用开发中,前端和后端职责明确,前端负责用户交互和界面展示,而后端负责数据处理和业务逻辑。这种模式下,前端通过API与后端进行通信,实现了界面和数据的解耦。 RuoYi-Vue是一个基于Java的...

    SpringBoot+Vue前后端分离

    在现代Web开发中,前后端分离已经成为了一种标准架构模式,极大地提高了开发效率和用户体验。本文将深入探讨基于"Spring Boot+Vue"实现的前后端分离项目,以及其中涉及到的关键技术点。 首先,Spring Boot是Java...

    网上书店Vue+SpringBoot前后端分离项目(包含数据库脚本文件).zip

    在前后端分离的架构下,前端通过发送Ajax请求与后端通信,获取或更新数据。Vue.js的axios库常用于发起HTTP请求,与SpringBoot提供的RESTful API接口对接。后端接收到请求后,通过Spring MVC或者Spring WebFlux处理,...

    springbootspringsecurity前后端分离(一个小demo)

    在这个“springbootspringsecurity前后端分离(一个小demo)”中,我们将探讨如何在这样的架构下实现安全控制。 首先,Spring Boot是基于Spring框架的快速启动项目,它预配置了许多默认设置,包括自动配置、内嵌Web...

Global site tag (gtag.js) - Google Analytics