Web系统前后端分离架构中的控制器优化

作者: 少校seo 分类: 黑帽seo资讯 发布时间: 2019-11-07 22:03

《科技经济杂志》2019年第16期

| |

[摘要]:在网络应用系统的设计中,对MVC架构进行了改进,采用了前端和后端分离架构,降低了系统的复杂性,增强了系统的可扩展性,使系统结构清晰。通过研究前端和后端分离架构的特点,提出了一种使用通用控制器集中处理用户请求的解决方案,解决了为每个服务重复编写控制器的问题,并在Spring Boot中进行了设计和实现。

[作者股]:

[分类编号]: TP393.09

(我如何获得全文?欢迎:购买知网充值卡,在线充值,在线咨询)

CAJViewer阅读器支持CAJ和PDF文件格式,AdobeReader只支持PDF格式

[参考文献]

中国期刊全文数据库

爬得高;王建;黄英;何克清;;[·朱];微型微型计算机系统;2015年11期

耿壮;;[·朱];计算机知识和技术;第23期,2012年

[共同引用文献]

中国期刊全文数据库

方德祥;方琼;;[·朱];中国的高科技企业;第23期,2015年

李静;王璐;;[·朱];Xi工业大学学报;2013年05期

胡君;;[·朱];无线互联网技术;2012年10期

[二级参考文献]

中国期刊全文数据库

杨小艺;王洪亮;;[·朱];福建计算机;2011年12期

伊森。;[·朱];计算机知识和技术;第26期,2011年

秦恒;;[·朱];科技信息;第01期,2010年

傅谷;陈庆丰;;[·朱];计算机系统的应用;2009年第7期

熊凯;王成明;邝桂娟;陶飞;;[·朱];计算机和信息技术;第03期,2008年

廖明超、高洪波、何建;[·朱];武汉理工大学学报;2004年发行

[相似文学]

中国期刊全文数据库

万青;;[·朱];科学、技术和经济杂志;2019年16期

;[·朱];信息安全和通信保密;2006年07期

吴欢;;[·朱];信息和电子工程;第02期,2007年

薛聪;马存庆;柳宗斌;张庆龙;;[·朱];信息网络安全;第09期,2014年

;[·朱];计算机安全;2006年07期

赵永祥、陈昌佳;[·朱];电子学杂志;第02期,2003年

;[·朱];办公自动化;2014年20期

李宏彦;;[·朱];计算机系统的应用;2006年09期

胡俊泰;吴镇宇;符晓;王一超;;[·朱];网络与信息安全杂志;第09期,2018年

陈盒浩;黄金果;;[·朱];机械制造和自动化;第01期,2015年

中国重要会议论文全文数据库

薛聪;马存庆;柳宗斌;张庆龙;;[·阿];第29届全国计算机安全研讨会会议录([);2014年

周吉良;汪正华;;[·阿];第19届全国计算机安全研讨会会议录([);2004

冯传芬;;[·阿];中国通信学会信息与通信网络技术委员会2015年年会纪要([);2015年

范·华汇;;[·阿];2017年[数字造船学术交流会议录;2017

黥布;王妍妍;黄粱山;;[·阿];2013年第一届中国指挥控制会议录([);2013年

王新;高能;马存庆;薛聪;;[·阿];第29届全国计算机安全研讨会会议录([);2014年

小青;;[·阿];中国通信学会信息与通信网络技术委员会2011年年会纪要(第一卷)[;2011年

康庆阳;;[·阿];中国新闻工作者联合会第六届会员代表大会、2014年度学术会议和第七届“王选新闻科技奖”及优秀论文奖会议文集(三等奖)[;2014年

费·于慧;詹淑博;;[·阿];2007年传播理论与技术的新发展——第十二届全国青年传播大会论文集(第二卷)[;2007年

赵红;;[·阿];2017年8月[建筑科学与管理研讨会纪要;2017

中国重要报纸全文数据库

波波汇编;[】;互联网世界;2015年

;[】;互联网世界;2012年

本报记者BuNa[】;中国计算机新闻;2012年

匿名;[】;中国信息周刊;2015年

范玮琪汇编;[】;互联网世界;2013年

;[】;中国计算机新闻;2002

范玮琪汇编;[】;互联网世界;2014年

本报记者刘晶晶;[】;中国信息周刊;2015年

《网络世界》记者李夏衍;[】;互联网世界;2013年

《网络世界》记者董培新;[】;互联网世界;2014年

中国博士论文全文数据库

任静;[·丁];电子科技大学;2015年

胡雁南;[·丁];北京邮电大学;2015年

中国硕士学位论文全文数据库

俞金科;[·丁];北京邮电大学;2017

郑源;[·丁];北京邮电大学;2012年

郑丽丽;[·丁];北京邮电大学;2017

邓·春雪;[·丁];北京邮电大学;2017

卢军;[·丁];大连理工大学;2015年

韩旭;[·丁];西南交通大学;2017

朱兴浩;[·丁];重庆邮电大学;2017

刘帅;[·丁];山东大学;2016

李凡卡;[·丁];电子科技大学;2016

刘娟;[·丁];北京邮电大学;2014年

为什么要前后端分离?有什么优缺点

一.前戏

前端和后端的分离已经成为互联网项目开发的行业标准使用方法。前端和后端的分离可以通过nginx+tomcat有效地解耦(或者可以在中间添加一个节点)。此外,前端和后端的分离将为未来的大规模分布式架构、灵活计算架构、微服务架构和多终端服务(浏览器、车载终端、安卓、IOS等各种客户端)奠定坚实的基础。)。这一步是系统架构从猿进化到成人的唯一途径。

核心思想是前端html页面通过ajax调用后端restuful api接口,并与json数据交互。

在互联网架构中,名词解释:

Web服务器:一般指的是像nginx和apache这样的服务器,它们只能分析静态资源。

应用服务器(Application Server):一般来说,像tomcat、jetty、resin这样的服务器可以分析动态资源和静态资源,但是分析静态资源的能力不如网络服务器。

一般来说,只有网络服务器可以被外部网络访问,而应用服务器只能被内部网络访问。

二、有专门的技术行业(开发商分离)

大多数javaWeb项目过去都是既做前端又做后端的Java程序员。

随着时代的发展,越来越多的大、中、小企业开始越来越清晰地划分前端和后端的界限。前端工程师只关心前端事务,后端工程师只关心后端事务。俗话说,技术领域有其特殊性。如果一个人什么都知道,那么他毕竟什么都不擅长。

大中型公司需要专业人士,小公司需要多面手,但为了个人职业发展,我建议离职。

1.对于后端java工程师:

关注java基础、设计模式、jvm原理、spring+springmvc原理和源代码、linux、mysql事务隔离和锁定机制、mongodb、http/tcp、多线程、分布式架构、灵活计算架构、微服务架构、java性能优化以及相关项目管理等。

后端追求三个高度(高并发性、高可用性、高性能)、安全性、存储、业务等。

2.对于前端工程师:

关注html5、css3、jquery、angularjs、bootstrap、reactjs、vuejs、webpack、less/sass、glow、nodejs、谷歌V8、javascript多线程、模块化、面向方面编程、设计模式、浏览器兼容性、性能优化等。

前端追求的是:页面性能、流畅速度、兼容性、用户体验等。

技术领域有专业,所以你的核心竞争力会越来越高。你在生活中投入的东西,生活会给你反馈。两端的发展越来越高,越来越深。你想做什么就做什么。毕竟,你什么都不擅长。

通过将团队分为前端和后端团队,双方的工程师可以更加专注于各自的领域,独立管理,然后构建一个不断改进的完整团队。

三、原始时代(各种耦合)

我们的JavaWeb项目什么时候使用了几个背景框架,比如Spring MVC/Struts+Spring+Spring JDBC/Hibernate/myBatis等等。

大多数项目在java后端分为三层:控制层、业务层和持久层。控制层负责接收参数黑帽seo,调用相关业务层,封装数据,以及路由和渲染到jsp页面。然后jsp页面使用各种标签或手写java表达式来显示背景数据,播放MVC。

让我们先看看情况:需求被最终确定,代码被编写,测试被完成,然后呢?它会发行吗?您需要使用maven或eclipse等工具将代码键入war包,然后将war包发布到生产环境中的web容器中,对吗?

发布后,您应该启动您的网络容器并开始提供服务。此时,您可以通过配置域名、dns等来访问您的网站。(假设你是一个网站)。那让我想想,你的前后码都在那个战争包里吗?包括你的js,css,图片,各种第三方库,对吗?

#p#分页标题#e#

好的,在浏览器中输入您的网站域名()后会发生什么?(这个问题对很多公司来说也是一个面对面的问题)我拿起它说,请寻找基础不好的童鞋。

浏览器通过域名通过dns服务器找到您服务器的外部网络ip,并将http请求发送到您的服务器。tcp3握手后(tcp/ip低于http),浏览器开始通过tcp协议传输数据。在您的服务器收到请求后,它开始提供服务,接收参数,然后将您的响应返回给浏览器。浏览器然后通过内容类型分析返回的内容,并将其呈现给用户。

让我们看看,假设你的主页上有100张图片。此时,用户的请求看起来像http请求,但不是http请求。当用户第一次访问它时,浏览器中将没有缓存。对于您的100张图片,浏览器将连续请求100个http请求(有些人会告诉我http的长连接和短连接问题,这里不讨论)。当您的服务器收到这些请求时,它将需要使用内存创建套接字来播放tcp传输(在您的服务器上消耗第四个和JSP的痛苦)

大多数以前的javaWeb项目使用jsp作为页面层向用户显示数据,因为流量不高,所以没有那么严格的性能要求。然而,在大数据时代,对互联网项目的性能要求越来越高,原来耦合前端和后端的架构模式已经逐渐不能满足我们,因此我们需要找到一种解耦的方法来大大提高我们的负载能力。

1.动态资源和静态资源都耦合在一起。服务器压力很大,因为服务器将接收各种http请求,如css http请求、js、图片等。一旦服务器出了问题,前端和后端就连在一起,用户体验非常差。

2.用户界面完成设计图后,前端工程师只负责将设计图切割成html。java工程师需要将html打包到jsp页面中,这有很高的错误率(因为页面中通常有大量的js代码)。当修改问题时,双方需要合作开发,这是低效的。

3.jsp必须在支持java的网络服务器中运行(例如tomcat、jetty、resin等)。),和发动机等。无法使用(据说nginx具有高达5w的http并发单个实例,需要使用这一优势),并且其性能无法提高。

4.当第一次请求jsp时,它必须被编译到网络服务器中的servlet中,并且它将第一次运行缓慢。

5.每个请求jsp都是一个html页面,由servlet访问,然后由输出流输出。效率不如直接使用html高。

6.jsp中有许多标签和表达式。前端工程师会发现很难修改页面并遇到许多棘手的问题。

7.如果jsp中有很多内容,页面响应会很慢,因为它是同步加载的。

8.您需要前端工程师使用java ide(如eclipse),并需要配置各种后端开发环境。你考虑过前端工程师的感受吗?

基于上述难点,我们应该推进整个项目的开发权重,实现前端和后端的真正脱钩!

V.发展研制模型

老办法是:

1.产品体验/领导者/客户需求

2.制作设计图纸的用户界面

3.前端工程师制作html页面。

4.后端工程师将html页面设置为jsp页面(前端和后端非常依赖,后端必须等到前端html运行良好后再设置jsp。如果html发生变化,将会更加痛苦和低效)

5、整合问题

6.返工前端

7.后端返工

8.二次集成

9.成功集成

10.交付

新方法是:

1.产品体验/领导者/客户需求

2.制作设计图纸的用户界面

3.前端和后端同意的接口&数据和参数

4.前端和后端的并行开发(不需要很强的依赖性,允许前端和后端的并行开发。如果需求改变了,只有界面&如果参数没有改变,就不需要修改两边的代码,开发效率高)。

5.前端和后端的集成

6.前端页面调整

7.成功集成

8.交付

六、请求道

老办法是:

1.客户请求

2.服务器的servlet或控制器接收请求(后端控制路由和呈现页面,整个项目的开发权的主要部分在后端)

#p#分页标题#e#

3.调用服务和DAO代码来完成业务逻辑

4.返回jsp

5.jsp显示了一些动态代码

新方法是:

1.浏览器发送请求

2.直接到达html页面(前端控制路由和呈现页面,整个项目开发的权重向前移动)

3.html页面负责调用服务器接口来生成数据(通过ajax等)。,后台返回json格式的数据,它取代了xml,因为它简单高效)

4.填充html以显示动态效果,解析并操作页面上的DOM。

总结新方法的请求步骤:

大量并发浏览器请求->网络服务器集群(发动机)-gt;应用服务器集群(tomcat) ->应用服务器集群;文件/数据库/缓存/消息队列服务器群集

同时,它还可以和子模块一起玩,也可以根据业务一个接一个地分解成小集群,为后续的架构升级做准备。

七、前后分离的优势

1.可以实现真正的前端和后端解耦,前端服务器使用nginx。前端/WEB服务器放置一系列静态资源,如css、js、图片等。(甚至可以将css、js、图片和其他资源放在特定的文件服务器上,比如ariyun的oss,并使用cdn来加快速度)。前端服务器负责控制页面引用&跳转&路由,前端页面异步调用后端接口,后端/应用服务器使用tomcat(将tomcat视为数据提供者)来加速整体响应。(这里需要使用一些前端工程框架,如节点、反应、路由器、反应、还原和网络包。)

2、发现了臭虫,可以快速定位出问题是谁,不会互相踢腿。页面逻辑、跳转错误、浏览器兼容性问题、脚本错误、页面样式和其他问题都是前端工程师的责任。接口数据错误、未能成功提交数据、响应超时以及其他问题都由后端工程师解决。双方互不干涉。前端和后端是相爱的家庭成员。

3.在大并发的情况下,我可以同时横向扩展前端和后端服务器。例如,淘宝上的一台前端服务器需要2000多台前端服务器作为一个集群来抵御数十亿以上的日均pv。(去参加阿里的技术峰会,听他们说他们的网络容器都是自己写的。即使他的单个实例能够抵抗100,000个http并发,2,000个集合也是2亿个http并发,并且它们还可以根据预测的洪峰无限扩展。为什么搜索引擎优化的前端和后端之间的分离很差,只有一个主页,这很可怕。。。)

4.降低后端服务器的并发/负载压力。除了接口之外的所有http请求都被传输到前端引擎。接口的请求调用tomcat,引用nginx反向代理tomcat。除了第一页请求之外,浏览器还会对本地缓存进行大量调用。

5.即使后端服务暂时超时或关闭,前端页面也将正常访问,但数据不能被清除。

6.也许你还需要微信相关的灯光应用,这样你的界面就可以完全共享。如果您也有与应用程序相关的服务,您可以通过一些代码重构来重用大量接口,以提高效率。(多终端应用)

7.无论页面显示多少内容,它都不会害怕,因为它是异步加载的。

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

9.提高代码的可维护性。可读性(前端和后端连接在一起的代码很难阅读)。

10.提高开发效率,因为前端和后端可以并行开发,而不是像以前那样严重依赖。

11.在nginx中部署证书。外部网络使用https访问,只有端口443和80是开放的。所有其他端口都被关闭(防止黑客端口扫描)。内部网络使用http,从而确保性能和安全性。

12.前端的大量组件代码可以重用和组件化,以提高开发效率并提取它们!

八.有关注意事项

1.在需求会议期间,前端和后端工程师都必须参加,并且必须准备好接口文档。后端工程师必须写好测试用例(二维),不要让前端工程师充当你的全职测试。建议使用chrome插件postman或soapui或jmeter,服务层测试用例应该用junit编写。附言:前端播放单元测试可以吗?

#p#分页标题#e#

2.上面的接口不是java中的接口。坦率地说,调用接口就是调用控件中的方法。

3.前端团队的工作量增加,后端团队的工作量减少,性能和可扩展性提高。

4.我们需要一些前端框架来解决页面嵌套、分页、页面跳转控制等功能。(上面提到的那些前端框架)。

5、如果你的项目很小,或者是一个简单的内部网项目,那么你可以放心,没有任何架构,但是如果你的项目是一个外部网项目,连贯的。

6.以前,有些人使用像velocity/freemark这样的模板框架来生成静态页面。不同的人有不同的观点。

7.本文的主要目的是说jsp已经从大规模的外部网络java网络项目中消除了,但并不是说jsp根本无法学习。对于一些学生和朋友来说,jsp/servlet和其他相关的java网络基础仍然需要牢牢掌握。否则,你认为springmvc框架是基于什么?

8.如果页面上有一些权限和其他相关检查,那么这些相关数据也可以通过ajax从接口中检索。

9.对于可以在前端和后端完成的逻辑,我建议将其放在前端。为什么?因为您的逻辑需要计算资源,如果您将它放在后端来运行逻辑,它将消耗带宽& Memory & Cpu和其他计算资源,您应该记住服务器的计算资源是有限的,如果放在前端,客户端的计算资源会被使用,所以您的服务器负载会下降(高并发性场景)。与数据验证类似,前端和后端都需要完成!

10.前端需要有一种机制来处理后端请求超时和后端服务停机,并以友好的方式向用户显示它们。