JavaEE前后端分离以及优缺点
前端概念
前端是⼀切直接与⽤户交互的页⾯或软件(⽤户看得见、摸得着)的统称,⽐如各种⽹站⽹页、andorid ⼿机各种 App、苹果⼿机各种app、⼩程序、⽹络游戏客户端等。所以,普通⼈使⽤计算机打交道最多的就是前端了。既然有这么多种前端交互形式,其背后当然涉及⼤量的前端开发技术了。
如果有⼈对你说⾃⼰是前端开发⼯程师,其实这是⼀个很笼统的说法,就好⽐说我是⼀名⽼师。如果你是懂⾏的,肯定会追问他是做哪⽅⾯前端开发呢?这就好⽐问⼀个⽼师,你是教语⽂还是数学或其他学科。
那么,按照前端技术可以将前端⼤致分为五⼤类,分别是前端 Web ⽹页开发、前端Android⼿机App开发、前端苹果⼿机App开发、以及⼩程序开、客户端⽹络游戏开发。当然,使⽤不同的前端开发技术,在公司也对应有不同的前端开发岗位。⽬前⽤得最多的前端开发技术主要是 Web ⽹页开发技术了,具体⽽⾔就是html、css、js、jquery、vue、react 等(还有很多技术没写)。记得 android 智能⼿机出来时,因为对⼿机 app 需求量很⼤,所以从事 android app 前端开发⾮常⽕爆,但是现在 app 已经开发得差不多了,所以 android 前端开发⼯程师需求量就没那么多了。
⼀个⼈要想精通前端所有开发技术,这⼏乎是不可能的,这就好⽐⼀个⽼师想要能够教授所有学科⼀样。能够精通⼀两门前端开发技术,其实都已经很⽜逼了。
后端概念
后端是⼀切不直接与⽤户交互的软件或程序的统称(⽤户⼀般感受不到后端的存在)。那后端是⼲嘛的呢?后端的作⽤就是保存⽤户数据和处理前端发送过来的各种请求。说⽩了,后端是为前端提供服务的,所以后端⼀般称为后端服务器。如果前端是游戏客户端,那么后端就是游戏服务器端。如果前端是 Web ⽹页,那么后端就是 Web 服务器啦。如果前端是 App,那么后端就是 app 服务器哈。
和前端技术相⽐,后端涉及的开发技术更多,遇到的问题也更复杂。想⼀想就明⽩了,前端好⽐顾客,后端好⽐服务员,谁更累⼀些嘛。所以,从事后端开发相对⽽⾔,待遇也会⾼⼀些哈。如果你是想要踏⼊ IT ⾏业,⾸选就要⾯临选择学习前端还是后端,这个需要根据⾃⼰的兴趣还有条件掂量⼀下哈。
前⾯说过⽬前前端开发主要是针对 Web 页⾯开发,那么后端开发主要也就是针对 Web 服务器开发。⽽ Web 服务器开发技术哪家强?⾸先,你得知道有多少家技术嘛?⽐如 node.js、php、python 、asp、asp 、ruby、 java 等。既然有这么多家呀,到底哪家强呢?只能告诉你,各有各的美。当然,我也得告诉你,⽬前⼤型企业级 Web 服务器开发使⽤最多的技术就是 Java,称为 JavaEE。这
也是 Java 技术的主要应⽤⽅向,很多童鞋学习 Java 就是为了以后出来从事 JavaEE 企业级开发。当然,Java 技术还有⼀个重要应⽤⽅向,那就是⼤数据啦。
前后端分离概念
nginx部署前端项目现在我们对前端和后端有⼀些基本概念了吧。简单说,前端就好⽐电影⾥的演员,后端就好⽐电影⾥的导演。在你眼前晃来晃去、风光⽆限的是演员就好⽐前端,⽽默默⽆闻的幕后英雄是导演就好⽐后端。
那前端和后端哪个重要呀?就好⽐电影,有了好的演员,如果没有好的导演和剧本,那也⽩搭;有了好的导演和剧本,如果遇到票房毒药演员,也是毁三观。所以,前端和后端都很重要,缺⼀不可。
那前后端分离是怎么回事?是不是演员和导演要分家。当然不是,前后端分离是⼀种演员和导演合作的⽅式罢了,可以让演员和导演更好的配合,共同完成⼀部电影。所以,前后端分离是⼀种架构模式,能够更好的开发企业级 Web 项⽬。
前后端分离已成为互联⽹项⽬开发的业界标准使⽤⽅式,并且前后端分离会为以后的⼤型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,⻋载终端,安卓,IOS等)打下坚实的基础,这个步骤是系统架构从猿进化成⼈的必经之路。
前后端分离的核⼼思想是前端 html 页⾯通过 ajax 调⽤⽤后端的 restuful api 接⼝并使⽤ json 数据进行交互。
前后端分离带来开发⼈员分离
以前的 JavaWeb 项⽬⼤多数都是 Java程序员⾃编⾃导,也就是既搞前端,⼜搞后端。
随着时代的发展,渐渐的许多⼤⼤⼩⼩公司开始把前后端的界限分的越来越明确,前端⼯程师只管前端的事情,后端⼯程师只管后端的事情。正所谓术业有专攻,⼀个⼈如果什么都会,那么他毕竟什么都不不精。
⼤中型公司需要专业⼈才,⼩公司需要全才,但是对于个⼈职业发展来说,专才⽐全才会更有市场竞争⼒。
1. 对于后端 Java 开发⼯程师:
应该把精⼒放在 Java 基础,设计模式,JVM 原理,spring、springmvc 以及 mybatis 原理及源码,linux,mysql 事务隔离与锁机
制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,Java 性能优化,以及相关的项⽬管理等。
记住后端追求的是:三⾼(⾼并发,⾼可⽤,⾼性能),安全,存储,业务等。
2. 对于前端 Web 开发⼯程师:
应该把精⼒放在 html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8 引
擎,javascript 多线程,模块化,⾯向切⾯编程,设计模式,浏览器兼容性,性能优化等。
记住前端追求的是:页⾯表现,速度流畅,兼容性,⽤户交互体验等。
这就是所谓的术业有专攻,这样你的核⼼竞争⼒才会越来越强,正所谓你往⽣活中投⼊什么,⽣活就会反馈给你什么。并且前后端的发展都越来越⾼深,技术越来越复杂,你想什么都会,那你毕竟什么都不可能精。
通过公司将团队分成前后端团队,让两边的开发⼯程师更加专注各⾃的领域,独⽴治理,然后构建出⼀个全栈式的精益求精的团队。
前后端分离的优势
1. 可以实现真正的前后端解耦。前端服务器使⽤ nginx。前端/WEB服务器放的是 css,js,图⽚等⼀系列静态资源,前端服务器负责控制
⻚⾯引⽤、跳转、路由,前端⻚⾯异步调⽤后端的接⼝,后端/应⽤服务器使⽤ tomcat,加快整体响应速度。
2. 发现 bug 可以快速定位是谁的问题,不会出现互相踢⽪球的现象。⻚⾯逻辑,跳转错误,浏览器兼容性问题,脚本错误,⻚⾯样式等
问题,全部由前端⼯程师来负责。接⼝数据出错,数据没有提交成功,应答超时等问题,全部由后端⼯程师来解决。双⽅互不⼲扰,前端与后端是相亲相爱的⼀家⼈
3. **在⾼并发情况下可以同时⽔平扩展前后端服务器 **。⽐如淘宝的⼀⼀个⾸⻚就需要 2000+ 台前端服务器做集来抗住⽇均多少亿+的
⽇⽇均pv
4. 减少后端服务器的并发/负载压力。除了接⼝以外的其他所有 http 请求全部转移到前端 nginx 上,接⼝的请求调⽤tomcat,参考 nginx
反向代理tomcat。且除了了第⼀次页⾯请求外,浏览器会⼤量调⽤本地缓存
5. 后端服务暂时超时或者宕机了,前端页⾯也会正常访问,只不过数据刷不出来⽽已
6. ⽀持多段应⽤。如果你需要有相关的轻应⽤,那样你的接⼝完全可以共⽤,如果也有 app 相关的服务,那么只要通过⼀⼀些代码
重构,也可以⼤量复⽤接⼝,提升效率
7. ajax 异步加载。⻚⾯显⽰的东西再多也不怕
8. nginx ⽀持⻚⾯热部署,不⽤重启服务器,前端升级更⽆缝
9. 增加代码的维护性他易读性(前后端耦合在⼀起的代码读起来相当费劲)
10. 提升开发效率,因为可以前后端并⾏开发
11. 前端⼤量的组件代码得以复⽤,组件化使开发效率得以提升
前后端分离的劣势
1. 要求前后端开发⼯程师配合更加密切。在开需求会议的时候,前后端⼯程师必须全部参加,并且需要制定好接⼝⽂档,后端⼯程师要
写好测试⽤例
2. 加重了前端团队的⼯作量,减轻了后端团队的⼯作量,这⼀点可能只对前端⼯程师来说是劣势吧:)
总结
1. 前后端分离并⾮仅仅只是⼀种开发模式,⽽是⼀种架构模式(前后端分离架构)。千万不要以为只有在撸代码的时候把前端和后端分
开就是前后端分离了了,需要区分前后端项⽬。前端项⽬与后端项⽬是两个项⽬,放在两个不同的服务器,需要独⽴部署,两个不同的⼯程,两个不同的代码库,不同的开发⼈员。
2. 前后端⼯程师需要约定交互接⼝,实现并行开发,开发结束后需要进行独⽴部署,前端通过 ajax 来调⽤ http 请求调⽤后端的 restful
api。前端只需要关注页⾯的样式与动态数据的解析和渲染,⽽后端专注于具体业务逻辑等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。