前后端分離概述

背景

前后端分離模式是對MVC開發(fā)模式的優(yōu)化與延續(xù),前后端分離已成為互聯(lián)網(wǎng)項目開發(fā)的業(yè)界標(biāo)準(zhǔn)使用方式,通過nginx+tomcat的方式(也可以中間加一個nodejs)有效的進(jìn)行解耦,并且前后端分離會為以后的大型分布式架構(gòu)、彈性計算架構(gòu)、微服務(wù)架構(gòu)、多端化服務(wù)(多種客戶端,例如:瀏覽器,車載終端,安卓,IOS等等)打下堅實的基礎(chǔ)。

MVC科普:model-view-controller
REST風(fēng)格API設(shè)計原則

為什么要前后端分離

  • 用戶訪問頁面越來越慢
  • 系統(tǒng)性能下降,數(shù)據(jù)庫扛不住,連接數(shù)經(jīng)常打滿,最終數(shù)據(jù)庫掛掉,重啟后又快速掛掉
  • 改了一個小地方,另外一個看似不相干的地方卻掛了,嚴(yán)重耦合
  • 互聯(lián)網(wǎng)日趨移動化

開發(fā)模式的探索

以前的方式 新的方式
產(chǎn)品經(jīng)歷/領(lǐng)導(dǎo)/客戶提出需求 產(chǎn)品經(jīng)歷/領(lǐng)導(dǎo)/客戶提出需求
UI做出設(shè)計圖 UI做出設(shè)計圖
前端工程師做html頁面 前后端約定接口&數(shù)據(jù)&參數(shù)
后端工程師將html頁面套成jsp頁面 前后端并行開發(fā)
集成出現(xiàn)問題 前后端集成
前端返工 前端頁面調(diào)整
后端返工 集成成功
二次集成 交付
集成成功
交付

請求方式的改變

以前的方式 新的方式
客戶端請求 瀏覽器發(fā)送請求
服務(wù)端的servlet或controller接收請求 直接到達(dá)html頁面
調(diào)用service,dao代碼完成業(yè)務(wù)邏輯 html頁面負(fù)責(zé)調(diào)用服務(wù)端接口產(chǎn)生數(shù)據(jù)
返回jsp 填充html,展現(xiàn)動態(tài)效果,在頁面上進(jìn)行解析并操作DOM。
jsp展現(xiàn)一些動態(tài)的代碼

前后端分離褒貶的討論

需要前后端分離場景
  1. 前端變化遠(yuǎn)比后端變化頻繁
  2. 尚處于原始開發(fā)模式,數(shù)據(jù)邏輯與表現(xiàn)邏輯混雜不清
  3. 前端效果絢麗/跨設(shè)備兼容要求高

前后分離的優(yōu)勢:

  1. 可以實現(xiàn)真正的前后端解耦,前端服務(wù)器使用nginx。
  2. 發(fā)現(xiàn)bug,可以快速定位是誰的問題,不會出現(xiàn)互相踢皮球的現(xiàn)象。
  3. 在大并發(fā)情況下,可以同時水平擴(kuò)展前后端服務(wù)器。
  4. 減少后端服務(wù)器的并發(fā)/負(fù)載壓力
  5. 即使后端服務(wù)暫時超時或者宕機(jī)了,前端頁面也會正常訪問,只不過數(shù)據(jù)刷不出來而已。
  6. 多端應(yīng)用
  7. 頁面顯示的東西再多也不怕,因為是異步加載。
  8. nginx支持頁面熱部署,不用重啟服務(wù)器,前端升級更無縫。
  9. 增加代碼的維護(hù)性&易讀性(前后端耦在一起的代碼讀起來相當(dāng)費(fèi)勁)。
  10. 提升開發(fā)效率,因為可以前后端并行開發(fā),而不是像以前的強(qiáng)依賴。
  11. 在nginx中部署證書,外網(wǎng)使用https訪問,并且只開放443和80端口,其他端口一律關(guān)閉(防止黑客端口掃描),
    內(nèi)網(wǎng)使用http,性能和安全都有保障。
  12. 前端大量的組件代碼得以復(fù)用,組件化,提升開發(fā)效率,抽出來!

注意事項:

  1. 在開需求會議的時候,前后端工程師必須全部參加,并且需要制定好接口文檔,后端工程師要寫好測試用例(2個維度)
  2. 上述的接口并不是java里的interface,說白了調(diào)用接口就是調(diào)用你controler里的方法。
  3. 加重了前端團(tuán)隊的工作量,減輕了后端團(tuán)隊的工作量,提高了性能和可擴(kuò)展性。
  4. 我們需要一些前端的框架來解決類似于頁面嵌套,分頁,頁面跳轉(zhuǎn)控制等功能。
  5. 如果頁面上有一些權(quán)限等等相關(guān)的校驗,那么這些相關(guān)的數(shù)據(jù)也可以通過ajax從接口里拿。
  6. 前端需要有機(jī)制應(yīng)對后端請求超時以及后端服務(wù)宕機(jī)的情況,友好的展示給用戶。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容