譯者注:作為開發人員,我們都知道應該講前后臺進行分離,但是實際工作中,我們可能很難真的做到這一點。作者在本文中介紹了幾個原因,幫助讀者了解到分離以后的好處。以下為譯文。
除非你的web應用程序是100%的客戶端代碼,否則你就應該將前后端分離開來。人們常常會陷入這樣的陷阱:因為實際工作中經常需要做很大的調整,所以他們不應該花時間開發一個單獨的API和客戶端應用程序,或者他們認為他們的應用程序太小了,他們跟本不需要進行分離。
這種應用就是我稱之為一體化的應用程序。在這種應用程序中,你的業務邏輯和用戶界面是在服務器上運行的一個實體。但是,讓web應用程序具有獨立的前端和后端有很多好處。
將應用劃分為單獨的前后端應用,其中的一個好處就是模塊化。由于應用程序邏輯與用戶界面完全分離,所以你的Web應用程序可能已經有初步的模塊化結構了。模塊化在許多方面都有幫助,包括測試、可讀性和可維護性。
使用一個單獨的API,你的應用程序邏輯可以被很多應用程序復用。這意味著你可以創建一個使用API的移動應用程序,或者在一個完全獨立的應用程序中使用API,或者允許其他人訪問API(免費或付費)。
由于客戶端應用程序是一個完全獨立的實體,你可以處理高級靜態文件服務技術,而在需要將UI呈現為服務器端的應用程序中,這些技術是不可用的。例如,現在可以使用NGINX和一些簡單的規則來將整個客戶端應用程序放在緩存中。
“一體化”服務器端應用程序的大缺陷之一是反饋用戶響應性方面。在服務器端應用程序中,用戶單擊按鈕來獲取數據的這個動作,常見的流程描述如下:
1. 用戶單擊一個按鈕來獲取數據
2. 瀏覽器向服務器發送請求
3. 服務器查詢數據庫
4. 應用程序對數據進行邏輯處理
5. 應用程序在展示層呈現數據
6. 服務器將響應返回給用戶
7. 用戶在等待頁面加載之后,會看到反饋
8. 有了一個單獨的客戶端應用程序,你可以利用許多反饋機制,例如使用加載器或進度條。一旦你的請求返回(例如通過一個AJAX調用),你就可以更新你的展示。
是的,我加了一個5。有了獨立的API和UI項目,你可以不用同時再更新或部署兩個應用了。如果在新部署的UI中出現了關鍵問題,你可以直接回滾它,而不用擔心會影響你在API項目中所做的改善性能的調整。
這種分離的架構有很多優點。但是,使用整體架構也有一些好處。例如,如果你的應用程序包含在一個項目中,那么你可以更快地完成開發工作。有更多的編碼涉及到單獨的用戶界面和API(但是許多框架使這更容易),這已經不是什么秘密了。還有一些安全方面的好處。例如,實際上你根本沒有將API公開出來。有一些方法可以保護API,但是不公開這種做法會更好一點。如果你覺得還有其它的好處,你可以談談留下評論,讓我們來討論一下。
對許多軟件開發人員來說,這似乎是一個很正常的選擇。然而有的人要么因為不熟悉這個概念,要么就是簡單的因為懶惰,所以他們根本就不采用這種架構。從個整體架構來說,可能不采用這種結構但是也很成功的例子有很多。但是,我看到的更多的是分離API和UI以后會帶來很多好處。建議那些尚未嘗試過這個概念的開發人員可以試一試,親自感受一下前后端分離帶來的好處。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。