Web 和應用服務器經常被混淆,部分是因為它們一起工作,部分是因為一些供應商將 Web 和應用服務器整合到兩用機器中。類似地,使用“Web 應用程序服務器”等術語給人的印象是它們是雙單元,而實際情況是它們通常是不同的、獨立的節點。
Web 服務器和應用程序服務器之間的關鍵區別在于它們如何交付 Web 和應用程序內容。從互聯網的早期開始,Web 服務器一直是為 Web 客戶端請求提供服務的媒介。Web 服務器接收客戶端請求并從相關數據庫中檢索內容以提供給客戶端。相比之下,應用服務器也為客戶端提供 Web 內容,但能夠處理動態請求。
隨著萬維網的發展,網頁腳本從 HTML 轉變為JavaScript,網頁內容變得更具交互性。動態腳本語言的引入推動了Web 開發向前發展,并產生了當今可用的軟件、工具和應用程序。這種轉變推動了 Web 服務器功能的界限,并導致在服務器管理中采用另一臺稱為應用程序服務器的高度專業化的計算機。本文著眼于 Web 服務器和應用服務器所扮演的角色以及它們之間的區別。
什么是網絡服務器?
Web 服務器是負責以下各項的計算機系統:
- 收藏
- 加工
- 并向客戶(用戶/瀏覽器)提供 Web 內容
為了檢索 Web 資源,用戶使用 Web 瀏覽器從 Web 服務器請求 Web 內容。無論是虛擬設備還是物理設備,Web 服務器都會接收來自 Web 瀏覽器的 HTTP 請求,將請求轉換為網頁的底層數據庫,并使用請求的資源進行響應。也就是說……如果資源是靜態內容,例如 PDF 或新聞文章。
HTML:靜態內容
自 1990 年代初以來,超文本標記語言 (HTML) 一直是用于生成網頁內容的主要編程語言。靜態網頁存儲在 Web 組織的數據庫中,以 HTML 代碼的形式顯示在客戶端的 Web 瀏覽器上。用戶將 HTML 內容識別為字體、文檔、圖像和視頻。這些網頁上的內容是靜態的,因為 Web 服務器為請求該特定網頁的所有客戶端檢索相同的實例。這種對靜態數據的輕松服務使 Web 服務器能夠為多個網頁和站點提供服務。
網絡服務器有限
遺憾的是,Web 服務器在面向服務架構 (SOA) 中的角色并不是管理 2020 年代高級 Web 內容請求的萬能,這讓我們想到了 Web 服務器最好的朋友,即應用程序服務器。
什么是應用服務器?
與 Web 服務器一樣,應用程序服務器是一臺能夠處理 HTTP 請求、為基于 Web 的應用程序提供服務以及使用 Web容器來滿足客戶端請求的計算機。然而,應用服務器更進一步的是它們對應用數據庫的訪問和動態內容的傳輸。憑借處理業務邏輯請求的能力,承擔比 Web 服務器更重的工作負載,并支持多線程,應用程序服務器是推動當前應用程序經濟的主力軍。
動態內容需要更多的服務器專業化
任何提供客戶端不需要啟動另一個頁面的交互式或實時工具的網頁都可能歸功于動態腳本和應用程序服務器的工作。動態網頁通常包括實時分析、金融交易和安全軟件。例如,谷歌是世界上訪問量最大的網站,為網絡客戶端提供了大量工具。其中一個程序是內置于 Google 搜索引擎的計算器。當客戶進行數學方程式搜索時,Google 會識別該請求并在搜索結果網頁上顯示計算器。如果客戶繼續使用計算器,他們會注意到 URL 在所有計算中都沒有改變。由于頁面中嵌入了動態腳本,計算器可以對客戶端輸入做出反應,并能夠處理與 Web 服務器活動分開的請求。
Web 和應用程序服務器如何協同工作?
下圖顯示了三個通信方:客戶端、應用程序服務器和數據庫服務器。當用戶使用 Google Chrome 或 Firefox 等網絡瀏覽器時,瀏覽器充當請求特定資源的客戶端。在下面的實例中,Web 服務器位于客戶端和應用程序服務器之間,為 HTTP 請求提供服務,Web 服務器可以促進靜態內容。當 Web 服務器收到超出其能力的請求時,應用服務器完成交換。
Web 服務器與應用服務器之間的差異
網絡服務器
- 托管網頁并響應請求
- 提供靜態內容
- 僅使用 HTTP 協議
- 僅提供基于 Web 的應用程序
- 不支持多線程
- 訪問靜態數據庫
- 促進輕量級網絡流量
- 存儲容量低
- 使用網絡容器
- 適用于網絡瀏覽器
- 在瀏覽器上提供超文本
應用服務器
- 托管應用程序和高級數據資源
- 提供動態內容
- 為應用程序使用 HTTP 和業務邏輯
- 為基于 Web 和企業的應用程序提供服務
- 支持多線程并行
- 訪問應用程序數據庫
- 促進更重的數據工作負載
- 高存儲容量
- 使用 Web 和應用程序客戶端容器
- 適用于瀏覽器、Web 和移動應用程序
- 提供海量數據資源