往某个方向深深钻研,这样的你还不知道?

前后端分离已成为互联网项目开发的业界标准使用方式,通过+的方式(也可以中间加一个)有效地对前端和后端的开发进行解耦。前后端分离解决的耦合问题前后端分离的优点前后端分离可以真正地实现前后端解耦,前端服务器使用。前后端分离的模式下,后台的接口可以复用。增加代码的维护性和易读性,提高开发效率(前后端代码耦合在一起很难读,比如JSP页面)。但是如果是大型外网项目,前后端分离就非常必要了。

前后端分离已经成为互联网项目开发的行业标准。+ 方法(中间也可以加一个)有效地解耦了前后端开发。并且前后端分离将为未来的大规模分布式架构、弹性计算架构、微服务架构、多终端服务(各种客户端,如浏览器、车载终端、、IOS , 等等。)。前后端分离的核心思想是前端HTML页面通过AJAX调用后端API接口,通过JSON数据进行交互。

前端开发与后端开发分离

之前的项目大多是从事前后端工作的Java程序员。随着时代的发展,很多大中小公司逐渐开始划分前端和后端的界限越来越清晰,即前端工程师只负责前端开发,后端负责-end 工程师只负责后端开发。大中型企业需要专门人才,小企业需要全才(省钱)。但是对于个人的职业发展来说,还是分开比较好,因为当职业发展到后期,企业往往需要某个方面的专家,而不是技术工人。如果一个人对前端和后端都略知一二,那他就无话可说了。

前端追求页面性能、流畅速度、兼容性和用户体验。所以前端开发工程师需要重点关注,CSS3、,,,,,,,Less/Sass,Gulp,,V8引擎,JS多线程,JS模块化,JS面向切面编程、设计模式、浏览器兼容性、性能优化等。

后端追求安全、存储、业务三高(高并发、高可用、高性能)。因此,对于后端开发工程师,需要重点关注Java基础、设计模式、JVM原理、全家桶原理及源码、关系型数据库事务隔离与锁定机制、HTTP/TCP、多线程、分布式架构、弹性计算架构、微服务架构、Java性能优化、数据库性能优化、相关项目管理等。

朝着某个方向深入,让你的核心竞争力越来越高。俗话说,你投入生活的,生活会给你一些回报。不要强迫自己去追求所谓的全栈,因为不管是前端还是后端,都有很多高级的东西让你在后期花光了所有的精力。最后,我什么都得不到,别相信圣诞老人说的,我都想要)。当然,不代表不能学习,学习也是可以的,但是一定要抓住重点,分清轻重缓急,就像在生活中一样,不要把时间浪费在那些不重要的人和事上不值得。

前后端分离解决的耦合问题

曾几何时,我们的项目使用了几个后台框架,比如MVC、Boot、JDBC等。大部分项目在Java后端分为三层,分别是控制层()、业务层()和持久层(道)。控制层负责接收参数、调用相关业务层、封装数据、路由和渲染到JSP页面(或模板页面等)。然后在JSP页面上使用各种标签或者手写Java表达式,在后台显示数据,发挥MVC思想。

先来看一下这个情况:我们开发一个网站,设置好需求,写代码,跑测试,用IDE等工具把代码打包成war包,然后war包发布到WEB生产环境中的容器。, 启动WEB容器后,域名和DNS配置完成,可以访问网站了。这时候我们的前后端代码都在war包里,包括JS、CSS、图片等各种静态资源文件。

接下来,我们在浏览器中输入网站域名( )。浏览器通过域名和DNS服务器找到我们服务器的外网IP,向你的服务器发送HTTP请求。TCP三次握手后(HTTP下为TCP/IP),开始通过TCP协议传输数据,我们的服务器收到请求后,开始提供服务,接收参数,然后将我们的响应返回给浏览器。然后浏览器通过 -type 解析返回的内容并呈现给用户。

这里假设我们的首页有100张图片,那么当用户访问首页时,需要建立100个HTTP请求。我们的服务器需要花费内存来创建这些请求来播放 TCP 传输(在服务器上消耗)。计算资源)。重点是,这种情况下,我们服务器的压力会很大,因为页面中的所有请求都只向我们的服务器请求,如果一个人也可以,如果有人并发访问(这里就不说了关于服务器集群,再说单实例服务器),那么我们的服务器可能处理不了(TCP连接、带宽、内存、硬盘、IO、WEB服务器内存等),可能会宕机。

这也是大中型Web应用需要解耦的原因。理论上,我们可以将数据库、应用服务、消息队列、缓存、用户上传的文件、日志等放在一台服务器上,而不必玩服务管理、性能监控、报警机制等。如果爱宕机了,它会下来(佛教青年)。但现实不允许我们走下去。当一个子应用因为内存不稳定导致整个服务器内存溢出,进而导致我们的网站挂掉,我们就不好了。比如我们公司的业务此时正处于井喷发展的高峰,服务器挂掉,业务被技术堵死,可能会导致大量用户流失,后果不堪设想。顺便说一句,技术必须领先于业务,

此外,当你所有的应用程序耦合在一起时,它就相当于一块巨石。当服务器负载能力不足时,一般采用负载均衡的方式对服务器进行集群。这样,你实际上是在横向扩展巨石,性能加速会越来越低。要知道,低负载的功能或模块不需要横向扩展。横向扩展应该针对性能瓶颈。在这里的例子中,性能瓶颈与前端无关,也不需要横向扩展前端。同时,在版本部署的时候,如果只更改后端代码,就必须重新发布前端代码,明显降低了效率。

正因为如此,正常的互联网架构分为WEB服务器集群、应用服务器集群、文件服务器集群、数据库服务器集群、消息队列集群、缓存集群等集群。

前后端耦合的缺点(以JSP为例)

以前的项目大多使用JSP作为页面层向用户展示数据,因为流量不高,所以没有这么严格的性能要求,但是现在大数据时代,对互联网项目的性能要求越来越高越来越高,所以原来耦合网络前后端的架构模式已经逐渐不能满足我们,所以我们需要找到一种解耦的方式来大幅度提高我们的负载能力。前后端耦合主要有以下缺点(以JSP为例):

1.动态资源和静态资源都是耦合在一起的,服务器压力很大,因为服务器会收到各种HTTP请求,比如对CSS、JS、图片等的HTTP请求。一旦服务器处于一个状态,前后端就会一起完成,用户体验会极差。如果前后端分开,你的后端服务器down了,但是前端服务器没有down,用户还是可以看到界面的,虽然没有请求数据,呵呵。

2.UI有了设计图后,前端开发工程师只负责将设计图切割成HTML,而Java开发工程师需要将HTML设置成JSP页面,错误率高率(因为页面中经常出现大量的页面.js代码),修改问题时,需要双方协同开发,效率低下。

3.JSP页面必须运行在支持Java的WEB服务器上(如,等),不能使用(官方宣称单实例HTTP并发最高5W),性能不行得到改善。

4.第一次请求JSP,必须在WEB服务器编译,第一次运行会比较慢。那么后续的每一个JSP请求都是通过输出流来访问HTML页面输出的,效率没有直接使用HTML高(注意是每次)。

5.JSP中有很多内置的专属标签和表达式,前端开发者在修改页面时经常会摸不着头脑。

6.如果JSP里面的内容很多,页面响应会很慢,因为是同步加载的,一次输出所有的内容。

7. 修改JSP页面需要前端开发工程师使用Java IDE,配置各种后端开发环境,对前端开发工程师极为不友好。

前后端分离的优势

1.前后端分离,真正实现前后端解耦,供前端服务器使用。前端/WEB服务器存储了CSS、JS、图片等一系列静态资源(你甚至可以把这些静态资源放在特定的文件服务器上,比如阿里云的OSS,使用CDN加速)。前端服务器负责控制页面引用、跳转和路由。前端页面通过AJAX异步调用后端接口,供后端/应用服务器使用(把情书交给前端,只提供数据),加快整体数据响应速度。(需要用到一些前端工程框架,如、、、、等)

2.在前后端分离的模式下,如果发现bug,可以快速定位问题所在,不会出现互相踢球的现象。如果是页面逻辑、跳转错误、浏览器兼容性问题、脚本错误、页面样式等等,都是前端开发工程师的锅。如果出现接口数据错误、数据提交失败、响应超时等问题,应由后端开发工程师接手。双方责任明确,不会有争吵。

3.前后端分离在大并发的情况下,我们可以同时横向扩展前后端服务器。要知道一个淘宝主页需要2000+台前端服务器作为一个集群,才能承受日均上亿的PV。(阿里的技术峰会说他们的WEB容器是自己写的,即使单个实例抗10万HTTP并发,2000个单位也是2亿HTTP并发,而且还可以根据预测的洪峰无限扩展,好吓人,只是A主页..)

4.前后端分离可以减少后端服务器的并发/负载压力。除接口外的所有其他HTTP请求都转给前端,转发接口的请求。而且除了第一次页面请求之外,浏览器还会调用很多本地缓存来缓存页面。

5.在前后端分离的模式下,即使后端服务器暂时超时或宕机,前端页面也能正常访问,但无法刷新数据。

6.在前后端分离的模式下,可以复用后端接口。比如,如果你需要做微信相关的轻应用,接口可以完全共享,而对于APP相关的服务,你也可以只通过一些代码重构来复用大量的接口,提高开发效率。(多终端应用)

7.页面不怕显示更多内容,因为它已经从同步加载变成了异步加载。

8.支持页面热部署,无需重启服务器,前端升级更加无缝。

9.增加代码的可维护性和可读性,提高开发效率(前后端代码耦合在一起,难以阅读,比如JSP页面)。

10.前后端可以并行开发,提高开发效率。

11.在中部署证书,使用外网访问,并且只开放443和80端口,其他端口全部关闭(防止黑客扫描端口),内网使用HTTP,性能和安全得到保证。

前后端分离的注意事项

1.召开需求会议时,所有前端和后端工程师都必须参加,并且需要制定接口文件。后端工程师必须写测试用例(二维),不要让前端工程师充当你的全职测试员。

2.上面的接口不是Java。说白了,调用接口就是调用你里面的方法。

3.我们需要一些前端框架来解决页面嵌套、分页、页面跳转控制等功能。

4.对于小型项目,比如简单的内网项目,不需要前后端分离,复杂的架构会拖累性能。但是如果是大型的外网项目,那么前后端分离是非常有必要的。

5.过去,有些人使用类似于/的框架模板来生成静态页面。个人觉得离使用JSP不远了,就是性能更好,没有真正的前后端分离。

6.前后端分离会增加前端团队的工作量,减少后端团队的工作量,提高性能和扩展性。

7.如果页面上有一些权限等相关检查,这些相关数据也可以通过AJAX从接口获取。

8.对于前端和后端都可以做的逻辑,建议放在前端,因为逻辑计算需要计算资源。如果放在后端运行逻辑,会消耗带宽、内存和CPU等以及其他计算资源。需要注意的一点是服务器的计算资源是有限的,如果放在前端,就会占用客户端的计算资源,这样你的服务器负载就会降低(高并发场景)。与数据验证类似,前端和后端都需要做。

9.前端需要有机制处理后端请求超时和后端服务宕机,友好地展示给客户。

免责声明:本文来自网络用户投稿,不代表本站观点和立场。如有侵权请发送邮件至tzanseo@163.com告知本站删除,本站不负任何责任及承诺。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论