Web 服務器 (Web Server)
Web 服務器可以解析 (handles) HTTP 協議。當 Web 服務器接收到一個 HTTP 請求 (request),會返回一個 HTTP 響應 (response),例如送回一個 HTML 頁面。為了處理一個請求 (request),Web 服務器可以響應 (response) 一個靜態頁面或圖片,進行頁面跳轉 (redirect),或者把動態響應 (dynamic response) 的產生委托 (delegate) 給一些其它的程序例如 CGI 腳本,JSP (JavaServer Pages) 腳本,servlets,ASP (Active Server Pages) 腳本,服務器端 (server-side) JavaScript,或者一些其它的服務器端 (server-side) 技術。無論它們 (譯者注:腳本) 的目的如何,這些服務器端 (server-side) 的程序通常產生一個 HTML 的響應 (response) 來讓瀏覽器可以瀏覽。
要知道,Web 服務器的代理模型 (delegation model) 非常簡單。當一個請求 (request) 被送到 Web 服務器里來時,它只單純的把請求 (request) 傳遞給可以很好的處理請求 (request) 的程序 (譯者注:服務器端腳本)。Web 服務器僅僅提供一個可以執行服務器端 (server-side) 程序和返回 (程序所產生的) 響應 (response) 的環境,而不會超出職能范圍。服務器端 (server-side) 程序通常具有事務處理 (transaction processing),數據庫連接 (database connectivity) 和消息 (messaging) 等功能。
雖然 Web 服務器不支持事務處理或數據庫連接池,但它可以配置 (employ) 各種策略 (strategies) 來實現容錯性 (fault tolerance) 和可擴展性 (scalability),例如負載平衡 (load balancing),緩沖 (caching)。集群特征 (clustering—features) 經常被誤認為僅僅是應用程序服務器專有的特征。
應用程序服務器 (The Application Server)
根據我們的定義,作為應用程序服務器,它通過各種協議,可以包括 HTTP,把商業邏輯暴露給 (expose) 客戶端應用程序。Web 服務器主要是處理向瀏覽器發送 HTML 以供瀏覽,而應用程序服務器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業邏輯就象你調用對象的一個方法 (或過程語言中的一個函數) 一樣。
應用程序服務器的客戶端 (包含有圖形用戶界面 (GUI) 的) 可能會運行在一臺 PC、一個 Web 服務器或者甚至是其它的應用程序服務器上。在應用程序服務器與其客戶端之間來回穿梭 (traveling) 的信息不僅僅局限于簡單的顯示標記。相反,這種信息就是程序邏輯 (program logic)。正是由于這種邏輯取得了 (takes) 數據和方法調用 (calls) 的形式而不是靜態 HTML,所以客戶端才可以隨心所欲的使用這種被暴露的商業邏輯。
在大多數情形下,應用程序服務器是通過組件 (component) 的應用程序接口 (API) 把商業邏輯暴露 (expose)(給客戶端應用程序) 的,例如基于 J2EE (Java 2 Platform, Enterprise Edition) 應用程序服務器的 EJB (Enterprise JavaBean) 組件模型。此外,應用程序服務器可以管理自己的資源,例如看大門的工作 (gate-keeping duties) 包括安全 (security),事務處理 (transaction processing),資源池 (resource pooling),和消息 (messaging)。就象 Web 服務器一樣,應用程序服務器配置了多種可擴展 (scalability) 和容錯 (fault tolerance) 技術。