在傳統(tǒng)Web應用的多層架構中,系統(tǒng)一般會包括負載均衡器、Web服務器、應用服務器等多個后端服務。其中,Web服務器和應用服務器常常被大眾視為一個整體,但其實從工作原理上來說兩者還是有一定區(qū)分的。接下來小編就和大家聊聊兩者的具體區(qū)別。
在傳統(tǒng)Web應用的多層架構中,系統(tǒng)一般會包括負載均衡器、Web服務器、應用服務器等多個后端服務。其中,Web服務器和應用服務器常常被大眾視為一個整體,但其實從工作原理上來說兩者還是有一定區(qū)分的。接下來小編就和大家聊聊兩者的具體區(qū)別。
Web Server
Web 服務器的基本功能就是提供Web信息瀏覽服務。它支持HTTP協(xié)議、HTML 文檔格式及URL,專門處理HTTP請求(request),可與客戶側的網(wǎng)絡瀏覽器配合。它所提供的是一個可以執(zhí)行服務器端(server-side)程序和返回(程序所產(chǎn)生的)響應(response)的環(huán)境。
1.Web瀏覽器向一個特定的服務器發(fā)出Web頁面請求;
2.Web服務器接收到 web 頁面請求后,會把請求發(fā)至應用服務器處,傳遞給處理請求的程序,以尋找所請求的web頁面;
3.Web服務器從應用服務器處接收到所請求的 web 頁面內容,并將結果返回給客戶側的 Web 瀏覽器,由其顯示出來。
The Application Server
應用程序服務器(簡稱應用服務器)的職能則是讓多個用戶可以同時使用應用程序。它提供的是客戶端應用程序可以調用(call)的方法(methods),并通過很多協(xié)議來為應用程序提供(serves)商業(yè)邏輯(business logic)。
如果說 Web 服務器主要是處理向瀏覽器發(fā)送HTML以供瀏覽,那應用服務器就是提供訪問商業(yè)邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業(yè)邏輯就象調用對象的一個方法 (或過程語言中的一個函數(shù))。比如在用戶中心、結算中心、支付中心中所涉及到的導航、存儲數(shù)據(jù)、安全認證、控制流程,都需要靠應用服務器來響應。
在過去,兩者之間的功能區(qū)別較為明顯,而如今在大多數(shù)情況下,人們習慣于把Web服務器歸類為應用服務器的子集。因為隨著各自功能項的不斷添加,它們之間的界線早已變得模糊。我們知道,web頁面內容有靜態(tài)的,也有動態(tài)的。靜態(tài)的內容,Web服務器可以直接將結果發(fā)回給瀏覽器;對于動態(tài)內容,則通常需要交給應用服務器先處理,由應用服務器返回結果。早期由于受HTTP 1.0協(xié)議的局限,web服務所提供的頁面內容和圖片服務大多是靜態(tài)的。后來隨著CGI功能的添加,意味著可以為每個web請求啟動一個進程來產(chǎn)生動態(tài)內容。例如.NET中最常用的Web服務器是IIS,因為IIS就可以自已解釋處理ASP、ASP.NET 這兩種微軟的動態(tài)網(wǎng)頁
腳本語言。
雖然 Web 服務器不支持事務處理或數(shù)據(jù)庫連接池,但現(xiàn)在由于HTTP協(xié)議愈發(fā)成熟,使得 Web 服務器也變得更加復雜,擁有了像緩存、安全和session管理這些附加功能,它可以處理更高的負載、更多的并發(fā),并通過傳送XML有效載荷(payload)給服務器,讓自己具備處理數(shù)據(jù)和響應(response)的能力(前提是不需要應用服務器來處理相關邏輯)。
應用服務器配置了多種容錯和可擴展技術,并且傳統(tǒng)的應用服務器也開始逐漸嵌入HTTP通信等原本屬于Web服務器的功能?,F(xiàn)在大多數(shù)應用程序服務器內其實已經(jīng)包含了Web服務器,這就意味著可以把Web服務器當作是應用程序服務器的一個子集(subset)。不過在一些復雜
網(wǎng)站的架構中,我們還是會建議將兩者進行獨立配置。畢竟,部分功能的必要分離有助于提高系統(tǒng)的整體性能,并給維護和升級留下余地。
以上就是Web服務器和應用服務器在工作原理上的具體區(qū)別。