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程序員自編自導,也就是既搞前端,⼜搞后端。

隨着時代的發展,漸漸的許多⼤大⼩小公司開始把前后端的界限分的越來越明確,前端工程師只管前端的事情,后端工程師只管后端的事情。正所謂術業有專攻,⼀個⼈如果什么都會,那么他畢竟什么都不不精。

⼤中型公司需要專業⼈才,⼩公司需要全才,但是對於個⼈職業發展來說,專才比全才會更有市場競爭力。

  1. 對於后端 Java 開發工程師:

應該把精⼒放在 Java 基礎,設計模式,JVM 原理,spring、springmvc 以及 mybatis 原理及源碼,linux,mysql 事務隔離與鎖機制,mongodb,http/tcp,多線程,分布式架構,彈性計算架構,微服務架構,Java 性能優化,以及相關的項⽬管理等。

記住后端追求的是:三⾼(⾼並發,⾼可⽤,⾼性能),安全,存儲,業務等。
  1. 對於前端 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。前端只需要關注頁面的樣式與動態數據的解析和渲染,⽽后端專注於具體業務邏輯等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM