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 .net、ruby、 java 等。既然有这么多家呀,到底哪家强呢?只能告诉你,各有各的美。当然,我也得告诉你,目前大型企业级 Web 服务器开发使用最多的技术就是 Java,称为 JavaEE。这也是 Java 技术的主要应用方向,很多童鞋学习 Java 就是为了以后出来从事 JavaEE 企业级开发。当然,Java 技术还有一个重要应用方向,那就是大数据啦。
前后端分离概念
现在我们对前端和后端有一些基本概念了吧。简单说,前端就好比电影里的演员,后端就好比电影里的导演。在你眼前晃来晃去、风光无限的是演员就好比前端,而默默无闻的幕后英雄是导演就好比后端。
那前端和后端哪个重要呀?就好比电影,有了好的演员,如果没有好的导演和剧本,那也白搭;有了好的导演和剧本,如果遇到票房毒药演员,也是毁三观。所以,前端和后端都很重要,缺一不可。
那前后端分离是怎么回事?是不是演员和导演要分家。当然不是,前后端分离是一种演员和导演合作的方式罢了,可以让演员和导演更好的配合,共同完成一部电影。所以,前后端分离是一种架构模式,能够更好的开发企业级 Web 项目。
前后端分离已成为互联⽹项⽬开发的业界标准使⽤⽅式,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器 ,⻋载终端,安卓,IOS等)打下坚实的基础,这个步骤是系统架构从猿进化成⼈的必经之路。
前后端分离的核心思想是前端 html 页⾯通过 ajax 调⽤用后端的 restuful api 接⼝并使用 json 数据进行交互。
前后端分离带来开发人员分离
以前的 JavaWeb 项⽬⼤多数都是 Java程序员自编自导,也就是既搞前端,⼜搞后端。
随着时代的发展,渐渐的许多⼤大⼩小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,⼀个⼈如果什么都会,那么他毕竟什么都不不精。
⼤中型公司需要专业⼈才,⼩公司需要全才,但是对于个⼈职业发展来说,专才比全才会更有市场竞争力。
- 对于后端 Java 开发工程师:
应该把精⼒放在 Java 基础,设计模式,JVM 原理,spring、springmvc 以及 mybatis 原理及源码,linux,mysql 事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,Java 性能优化,以及相关的项⽬管理等。
记住后端追求的是:三⾼(⾼并发,⾼可⽤,⾼性能),安全,存储,业务等。
- 对于前端 Web 开发工程师:
应该把精⼒放在 html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8 引擎,javascript 多线程,模块化,⾯向切⾯编程,设计模式,浏览器兼容性,性能优化等。
记住前端追求的是:页⾯表现,速度流畅,兼容性,⽤户交互体验等。
这就是所谓的术业有专攻,这样你的核⼼竞争力才会越来越强,正所谓你往生活中投⼊什么,生活就会反馈给你什么。并且前后端的发展都越来越⾼深,技术越来越复杂,你想什么都会,那你毕竟什么都不可能精。
通过公司将团队分成前后端团队,让两边的开发⼯程师更加专注各⾃的领域,独⽴治理,然后构建出⼀个全栈式的精益求精的团队。
前后端分离的优势
可以实现真正的前后端解耦。前端服务器使⽤ nginx。前端/WEB服务器放的是 css,js,图片等⼀系列静态资源,前端服务器负责控制⻚⾯引用、跳转、路由,前端⻚⾯异步调用后端的接口,后端/应⽤服务器使⽤ tomcat,加快整体响应速度。
发现 bug 可以快速定位是谁的问题,不会出现互相踢皮球的现象。⻚⾯逻辑,跳转错误,浏览器兼容性问题,脚本错误,⻚⾯样式等问题,全部由前端⼯程师来负责。接⼝数据出错,数据没有提交成功,应答超时等问题,全部由后端⼯程师来解决。双⽅互不⼲扰,前端与后端是相亲相爱的⼀家人
**在高并发情况下可以同时水平扩展前后端服务器 **。⽐如淘宝的⼀一个⾸⻚就需要 2000+ 台前端服务器做集群来抗住日均多少亿+的⽇日均pv
减少后端服务器 的并发/负载压力。除了接⼝以外的其他所有 http 请求全部转移到前端 nginx 上,接口的请求调⽤tomcat,参考 nginx 反向代理tomcat。且除了了第一次页面请求外,浏览器会大量调用本地缓存
后端服务暂时超时或者宕机了,前端页⾯也会正常访问,只不过数据刷不出来⽽已
支持多段应用。如果你需要有微信相关的轻应用,那样你的接⼝完全可以共用,如果也有 app 相关的服务,那么只要通过⼀一些代码重构,也可以⼤量复用接口,提升效率
ajax 异步加载。⻚⾯显示的东西再多也不怕
nginx 支持⻚面热部署,不⽤重启服务器 ,前端升级更无缝
增加代码的维护性他易读性(前后端耦合在一起的代码读起来相当费劲)
提升开发效率,因为可以前后端并⾏开发
前端⼤量的组件代码得以复用,组件化使开发效率得以提升
前后端分离的劣势
要求前后端开发工程师配合更加密切。在开需求会议的时候,前后端工程师必须全部参加,并且需要制定好接⼝⽂档,后端⼯程师要写好测试⽤例
加重了前端团队的工作量,减轻了后端团队的⼯作量,这一点可能只对前端工程师来说是劣势吧:)
总结
前后端分离并⾮仅仅只是⼀种开发模式,⽽是⼀种架构模式(前后端分离架构)。千万不要以为只有在撸代码的时候把前端和后端分开就是前后端分离了了,需要区分前后端项⽬。前端项目与后端项目是两个项目,放在两个不同的服务器 ,需要独⽴部署,两个不同的工程,两个不同的代码库,不同的开发人员。
前后端工程师需要约定交互接⼝,实现并行开发,开发结束后需要进行独立部署,前端通过 ajax 来调⽤ http 请求调⽤后端的 restful api。前端只需要关注页面的样式与动态数据的解析和渲染,⽽后端专注于具体业务逻辑等。
JavaEE 前后端分离以及优缺点的更多相关文章
- Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(2)
1.restful api介绍 1.前后端分离的优缺点 1.为什么要用前后端分离 1.pc.app.pad多端适应 2.SPA(单页面应用)开发模式开始流行 3.前后端分离职责不清 4.开发效率问题, ...
- 前后端分离构架 与 json ajax简介
前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服 ...
- 从壹开始前后端分离 [.netCore 填坑 ] 三十三║ ⅖ 种方法实现完美跨域
缘起 哈喽大家周四好,趁着大家在团建的时候花一个下午学点儿东西,也是督促大家学习哟,希望大家看到老张的文章,可以有一丢丢的学习动力.不过话说过来,该吃的团建还是要去的,不能学我呀 [ /(ㄒoㄒ)/~ ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探
更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...
- 细说 Django — web 前后端分离
一.所谓的前后端分离 1.渊源 前端发展史 2.特点 前端:负责 View 和 Controller 层 后端:只负责 Model 层,业务处理/数据等 3.优缺点 优点:解耦,解放前端,职责明确 缺 ...
- [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue)
[转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员 ...
- NET Core3前后端分离开发框架
NET Core前后端分离快速开发框架 https://www.cnblogs.com/coldairarrow/p/11870993.html 引言 时间真快,转眼今年又要过去了.回想今年,依次开源 ...
- SpringMVC+Spring+mybatis+maven+搭建多模块框架前后端分离开发框架的完整demo,拿走不谢。——猿实战02
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- 从零玩转SpringSecurity+JWT整合前后端分离
从零玩转SpringSecurity+JWT整合前后端分离 2021年4月9日 · 预计阅读时间: 50 分钟 一.什么是Jwt? Json web token (JWT), 是为了在网络应用环境间传 ...
随机推荐
- 零基础学Java,PayPal技术专家手把手带你入门
在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...
- OpenPAL3:仙三开源版的第二个小目标 Accomplish!
去年的时候,OpenPAL3 的第一个版本发布 之后,我给 0.2 版本设定了一个小目标:让景天能跑出永安当.当时的第一个版本还只能算是概念验证的版本,没有音乐支持.输入支持,不能直接读取仙剑三的打包 ...
- day16.网络编程1
1 osi七层,tcp/ip 5层 1 cs架构和bs架构 2 互联网 3 osi七层.5层(5层名字记住:重点) -物理层 -网线,光纤 -数据链路层 -网卡 -网络层 -路由器 -传输层(运输层) ...
- IP Networks UVA - 1590
Alex is administrator of IP networks. His clients have a bunch of individual IP addresses and he de ...
- 用Taro写一个微信小程序(一)——开始一个项目
一.Taro简介 1.名字由来 Taro['tɑ:roʊ],泰罗·奥特曼,宇宙警备队总教官,实力最强的奥特曼. 2.taro是什么 Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vu ...
- CPF 入门教程 - 属性和事件(七)
CPF C#跨平台桌面UI框架 系列教程 CPF 入门教程(一) CPF 入门教程 - 数据绑定和命令绑定(二) CPF 入门教程 - 样式和动画(三) CPF 入门教程 - 绘图(四) CPF 入门 ...
- hdu1505 暴力或dp优化
题意: 给你一个矩阵,让你在里面找到一个最大的f矩阵.. 思路: 三种方法ac这到题目; 方法(1) 以宽为主,暴力 开一个数组sum[i][j],记录当前这个位置的 ...
- POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)
题意: 给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走. 思路: 感觉很赞的一个题目,据说证明是什 ...
- 通过修改EIP寄存器实现强行跳转并且注入DLL到目标进程里
/* 描述 功能:通过修改EIP寄存器实现32位程序的DLL注入(如果是64位,记得自己对应修改汇编代码部分) 原理: 挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器 ...
- 关于终端设备的设备唯一性的那些事之IMEI(转)
最近和别人聊起来数据上报,一起讨论到imei和MAC地址,然后发现一个问题:知道这两个东西都不唯一,但是不知道为什么---- 回来上各种小网站巴拉巴拉找了一下,终于大概了解了前世今生,这里简单汇总一下 ...