盡管“應用程序服務(wù)器與Web 服務(wù)器”暗示了對比,但在 Internet 上,這兩種類(lèi)型的服務(wù)器通常為了一個(gè)共同目的而部署在一起:滿(mǎn)足用戶(hù)對網(wǎng)站內容的請求。沒(méi)有定義 Web 服務(wù)器和應用程序服務(wù)器屬性的標準文檔,但讓我們看看這些術(shù)語(yǔ)是如何被普遍理解的。
一個(gè)Web服務(wù)器的基本工作是接受并滿(mǎn)足來(lái)自客戶(hù)端的請求從一個(gè)網(wǎng)站的靜態(tài)內容(HTML網(wǎng)頁(yè),文件,圖像,視頻等)??蛻?hù)端幾乎總是瀏覽器或移動(dòng)應用程序,請求采用超文本傳輸??協(xié)議?( HTTP ) 消息的形式,Web 服務(wù)器的響應也是如此。
一個(gè)應用程序服務(wù)器的基本工作是為其客戶(hù)提供訪(fǎng)問(wèn)通常所說(shuō)的業(yè)務(wù)邏輯,產(chǎn)生動(dòng)態(tài)內容; 也就是說(shuō),它是轉換數據以提供業(yè)務(wù)、服務(wù)或應用程序提供的特殊功能的代碼。應用程序服務(wù)器的客戶(hù)端通常是應用程序本身,并且可以包括 Web 服務(wù)器和其他應用程序服務(wù)器。應用程序服務(wù)器與其客戶(hù)端之間的通信可能采用 HTTP 消息的形式,但這不是必需的,因為它是用于 Web 服務(wù)器與其客戶(hù)端之間的通信。許多其他協(xié)議也很流行,包括 CGI 的變體。
應用程序服務(wù)器和 Web 服務(wù)器如何協(xié)同工作?
在典型的部署中,提供靜態(tài)和動(dòng)態(tài)生成內容的網(wǎng)站運行靜態(tài)內容的 Web 服務(wù)器和動(dòng)態(tài)生成內容的應用程序服務(wù)器。反向代理和負載平衡器坐在的一個(gè)或多個(gè)web服務(wù)器和一個(gè)或多個(gè)web應用程序服務(wù)器前將通信路由到適當的服務(wù)器,首先基于內容的類(lèi)型請求,然后根據所配置的負載平衡算法上。大多數負載均衡器程序也是反向代理服務(wù)器,它簡(jiǎn)化了 Web 應用程序服務(wù)器架構。
為什么這樣問(wèn)?
為什么某個(gè)東西是應用程序服務(wù)器還是 Web 服務(wù)器是個(gè)問(wèn)題?這主要是由于隨著(zhù)網(wǎng)站需求的增長(cháng),這兩種服務(wù)器的設計和使用越來(lái)越重疊。許多流行的應用程序同時(shí)充當 Web 服務(wù)器和應用程序服務(wù)器(想想 Apache HTTP Server、Express、Hapi 和 Koa)。
另一個(gè)重疊之處是一些 Web 應用程序服務(wù)器使用 HTTP 作為它們的通信協(xié)議。類(lèi)似地,一些 Web 服務(wù)器最終看起來(lái)像應用程序服務(wù)器,因為它們具有內置模塊和功能,這些模塊和功能本機支持 PHP 等流行語(yǔ)言,或代理并將請求從 HTTP 轉換為應用程序使用的協(xié)議(例如 FastCGI)。