將Web APP UI與API分離的4個(gè)原因
發(fā)表時(shí)間:2024-01-03 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]除非你的web應(yīng)用程序是100%的客戶端代碼,否則你就應(yīng)該將前后端分離開(kāi)來(lái)。人們常常會(huì)陷入這樣的陷阱:因?yàn)閷?shí)際工作中經(jīng)常需要做很大的調(diào)整,所以他們不應(yīng)該花時(shí)間開(kāi)發(fā)一個(gè)單獨(dú)的API和客戶端應(yīng)用程序,或者他們認(rèn)為他們的應(yīng)用程序太小了,他們跟本不需要進(jìn)行分離。這種應(yīng)用就是我稱之為一體化的應(yīng)用程序。在這種...
除非你的web應(yīng)用程序是100%的客戶端代碼,否則你就應(yīng)該將前后端分離開(kāi)來(lái)。人們常常會(huì)陷入這樣的陷阱:因?yàn)閷?shí)際工作中經(jīng)常需要做很大的調(diào)整,所以他們不應(yīng)該花時(shí)間開(kāi)發(fā)一個(gè)單獨(dú)的API和客戶端應(yīng)用程序,或者他們認(rèn)為他們的應(yīng)用程序太小了,他們跟本不需要進(jìn)行分離。
這種應(yīng)用就是我稱之為一體化的應(yīng)用程序。在這種應(yīng)用程序中,你的業(yè)務(wù)邏輯和用戶界面是在服務(wù)器上運(yùn)行的一個(gè)實(shí)體。但是,讓web應(yīng)用程序具有獨(dú)立的前端和后端有很多好處。
1.模塊化
將應(yīng)用劃分為單獨(dú)的前后端應(yīng)用,其中的一個(gè)好處就是模塊化。由于應(yīng)用程序邏輯與用戶界面完全分離,所以你的Web應(yīng)用程序可能已經(jīng)有初步的模塊化結(jié)構(gòu)了。模塊化在許多方面都有幫助,包括測(cè)試、可讀性和可維護(hù)性。
2.可復(fù)用性
使用一個(gè)單獨(dú)的API,你的應(yīng)用程序邏輯可以被很多應(yīng)用程序復(fù)用。這意味著你可以創(chuàng)建一個(gè)使用API的移動(dòng)應(yīng)用程序,或者在一個(gè)完全獨(dú)立的應(yīng)用程序中使用API,或者允許其他人訪問(wèn)API(免費(fèi)或付費(fèi))。
3.內(nèi)容交付
由于客戶端應(yīng)用程序是一個(gè)完全獨(dú)立的實(shí)體,你可以處理高級(jí)靜態(tài)文件服務(wù)技術(shù),而在需要將UI呈現(xiàn)為服務(wù)器端的應(yīng)用程序中,這些技術(shù)是不可用的。例如,現(xiàn)在可以使用NGINX和一些簡(jiǎn)單的規(guī)則來(lái)將整個(gè)客戶端應(yīng)用程序放在緩存中。
4.響應(yīng)性
“一體化”服務(wù)器端應(yīng)用程序的最大缺陷之一是反饋用戶響應(yīng)性方面。在服務(wù)器端應(yīng)用程序中,用戶單擊按鈕來(lái)獲取數(shù)據(jù)的這個(gè)動(dòng)作,最常見(jiàn)的流程描述如下:
1. 用戶單擊一個(gè)按鈕來(lái)獲取數(shù)據(jù)
2. 瀏覽器向服務(wù)器發(fā)送請(qǐng)求
3. 服務(wù)器查詢數(shù)據(jù)庫(kù)
4. 應(yīng)用程序?qū)?shù)據(jù)進(jìn)行邏輯處理
5. 應(yīng)用程序在展示層呈現(xiàn)數(shù)據(jù)
6. 服務(wù)器將響應(yīng)返回給用戶
7. 用戶在等待頁(yè)面加載之后,會(huì)看到反饋
8. 有了一個(gè)單獨(dú)的客戶端應(yīng)用程序,你可以利用許多反饋機(jī)制,例如使用加載器或進(jìn)度條。一旦你的請(qǐng)求返回(例如通過(guò)一個(gè)AJAX調(diào)用),你就可以更新你的展示。
5.版本控制
是的,我加了一個(gè)5。有了獨(dú)立的API和UI項(xiàng)目,你可以不用同時(shí)再更新或部署兩個(gè)應(yīng)用了。如果在新部署的UI中出現(xiàn)了關(guān)鍵問(wèn)題,你可以直接回滾它,而不用擔(dān)心會(huì)影響你在API項(xiàng)目中所做的改善性能的調(diào)整。
一個(gè)整體架構(gòu)的優(yōu)點(diǎn)是什么?
這種分離的架構(gòu)有很多優(yōu)點(diǎn)。但是,使用整體架構(gòu)也有一些好處。例如,如果你的應(yīng)用程序包含在一個(gè)項(xiàng)目中,那么你可以更快地完成開(kāi)發(fā)工作。有更多的編碼涉及到單獨(dú)的用戶界面和API(但是許多框架使這更容易),這已經(jīng)不是什么秘密了。還有一些安全方面的好處。例如,實(shí)際上你根本沒(méi)有將API公開(kāi)出來(lái)。有一些方法可以保護(hù)API,但是不公開(kāi)這種做法會(huì)更好一點(diǎn)。如果你覺(jué)得還有其它的好處,你可以談?wù)劻粝略u(píng)論,讓我們來(lái)討論一下。
結(jié)論
對(duì)許多軟件開(kāi)發(fā)人員來(lái)說(shuō),這似乎是一個(gè)很正常的選擇。然而有的人要么因?yàn)椴皇煜み@個(gè)概念,要么就是簡(jiǎn)單的因?yàn)閼卸,所以他們根本就不采用這種架構(gòu)。從個(gè)整體架構(gòu)來(lái)說(shuō),可能不采用這種結(jié)構(gòu)但是也很成功的例子有很多。但是,我看到的更多的是分離API和UI以后會(huì)帶來(lái)很多好處。建議那些尚未嘗試過(guò)這個(gè)概念的開(kāi)發(fā)人員可以試一試,親自感受一下前后端分離帶來(lái)的好處。
以上就是將Web APP UI和API分離的4個(gè)原因的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
網(wǎng)站建設(shè)是一個(gè)廣義的術(shù)語(yǔ),涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。