浅谈前后端分离
Posted 自然语言酷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈前后端分离相关的知识,希望对你有一定的参考价值。
说到原始时代,就要稍微久远一点,必然还没有app。
是一个pc网页的时代。
当时主流的动态网站技术是jsp,asp.net,还有发展蓬勃的php等,具体的时间大概是2000年前后吧。
当时研发技术人员的统称还是软件工程师,开发工程师等,没有太多的细分。
数据库、逻辑代码、掺杂着动态标签的html页面,一个人从头干到尾的情况很普遍......
摩尔定理确实是一个非常好的规律总结,硬件成本的变化也是互联网技术发展的一个重要因素。
术业有专攻-前端
由于电脑硬件的快速发展,带来了更高的显示分辨率和处理速度。
对于企业来说,给用户提供更好的使用体验愈发重要。
页面表现、速度流畅、兼容性、交互效果等都成了必要因素。
原有的“大包大揽”的职责分配被逐渐改变,会有专门的技术人员负责用户交互与体验部分,也就是“前端”职位的职责开始逐渐清晰。
前端的技术栈主要有,javascript、html、css,以及2009年发布的node.js,还有最近几年流行起来的vue等前端框架。
这个阶段还有一个很有意思的梗,就是小公司为了省钱,要求前端掌握一些ps等图片处理技术,也给不了解技术的人造成了误导,认为前端工程师是切图的。
术业有专攻-后端
并不是因为有一部分工程师去做前端开发了,剩下的就变成了后端开发。
从家用电脑的普及到互联网的普及,以及移动互联网和智能手机的兴起,对于技术服务来说,最典型的变化就是用户数快速增多、使用的时长也大幅增加。
高并发,高可用,高性能,安全,存储,业务多变性等等变成了互联网服务企业必须要应对的技术挑战。
企业需要有专职的人处理这些偏后台的技术工作,也就催生了后端技术职位的产生。
后端的技术栈,涉及的也非常广,包括:编程语言基础,设计模式,虚拟机原理,各类框架,操作系统,数据库技术,网络传输,分布式等。
大多数动态web开发技术都有很多相似之处,我们以jsp为例进行分析。
资源耦合
这里的资源指js、css、html、图片、动画等。
比如图片:
如果是页面背景之类的静态图片,要更换图片的话,就需要整个项目进行重新打包,进行发版;
即使是根据url,动态展现给用户的图片,由于是整个项目共用服务资源,这种相对比较大的文件请求,会给服务器造成额外的负担。
其他的相关资源也是同理。
项目耦合
传统项目最基本的是所有页面和服务都在一起。
项目扩容其实就是把项目复制到多台服务器上。
日常使用中,如果某个页面或者某个数据库连接配置有问题,就需要重新打包项目,全部重新发布,很可能还会造成网站服务一段时间不能使用。
所以,前后端分离,后端微服务化,其实也是一个大家从极其不方便,到逐渐方便的不断的探索过程。
线性耦合
在原始时代,一个人串行,多个人间并行的情况比较多见。
比如注册、登录页面和功能是A在负责。
下单,结算页面和功能是B在负责。
“一个用户只有在登录后才能下单,否则就要跳转到登录或注册页面”。
这个功能必须要等到A和B都完成各自的工作后才能进行,进度把控上稍有问题,就会出现相互等待的情况;技术调试和协作的成本也比较高。
技术嵌入耦合
即使是在经过了一段发展,前端工作相对独立后,当时也存在着前端工程师完成页面技术工作后,等后端工程师来嵌入动态数据标签,调试有问题后,再进行沟通、修改,效率比较低。
前后端分离后,双方可以先约定数据交互的接口规范,然后各自进行开发与调试。
后端工作更专注,彼此间只有逻辑协作关系,没有页面调用关系了。
前端与后端之间也避免了嵌入式等待。
如今已经是移动互联时代,不仅仅只为用户提供网页服务就可以了,还要支持手机、平板、手表等多个终端类型。
从企业内部来说,登录、注册、下单这些行为的逻辑都是一致的,不会因为用户使用不同的设备,就有不同的业务逻辑。
在前后端分离的技术架构下,前端或移动端负责适配各种不同的设备特点,如屏幕尺寸,而后端则只需要考虑业务逻辑的正确性与技术稳定性。
以上是关于浅谈前后端分离的主要内容,如果未能解决你的问题,请参考以下文章