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), 是为了在网络应用环境间传 ...
随机推荐
- Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashboar ...
- maven自动化构建工具
目录结构: 一.Maven简介 二.Maven核心概念 三.Maven的使用 四.Maven在IDEA中的应用 五.依赖管理 六.Maven常用设置 ------------------------- ...
- G - G ZOJ - 2723 (素数打表+set)
Prime Number Definition An integer greater than one is called a prime number if its only positive di ...
- @unittest.skip(reason):强制跳转。reason是跳转原因
在执行测试用例时,有时候有些用例是不需要执行的,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作就太麻烦了. unittest提供了一些跳过指定用例的方法 ...
- 关于js中的回调函数callback,通俗易懂
前言 其实我一直很困惑关于js 中的callback,困惑的原因是,学习中这块看的资料少,但是平时又经常见,偶尔复制一下前人代码,功能实现了也就不再去追其原由,这么着,这个callback的概念就越来 ...
- WordPress 函数do_action()详解和应用举例
do_action()函数: 我们经常能看到在一些WordPress函数中调用了do_action()函数,例如get_header(), get_footer()等调用模板的函数中经常调用do_ ...
- 感染性的木马病毒分析之样本KWSUpreport.exe
一.病毒样本简述 初次拿到样本 KWSUpreport_感染.exe.v 文件,通过使用PE工具,并不能辨别出该样本是那种感染类型,使用了一个比较直接的方法,从网上查资料,获取到了该样本的正常EXE文 ...
- POJ2536 二分图匹配
题意: 有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...
- hdu2830 可交换行的最大子矩阵
题意: 求最大子矩阵,但是相邻的列之间可以相互交换... 思路: 回想下固定的情况,记得那种情况是开俩个数组 L[i] ,R[i],记录小于等于i的最左边和最右边在哪个位置,对 ...
- Linux启动流程和服务管理(init和systemd)
目录 一:Linux启动流程 init和Systemd的区别 二:Linux服务管理(service,systemctl) 一:Linux启动流程 Rhel6启动过程: Rhel7启动过程: GRUB ...