---
# System prepended metadata

title: Web Server 和 Application Server
tags: [tutorials]

---

###### tags: `tutorials`
# Web Server 和 Application Server

由於網路中的傳輸協定是採用 HTTP，而負責此協定的伺服器是 Web Server，所以使用者理論上只能與 Web Server 做溝通，但是當使用者需要個人化結果時，又必須使用 Application Server 中的業務邏輯，究竟該如何讓使用者使用 Application Server 中的功能呢？答案是透過 Web Server。
然而就像 Client 跟 Server 溝通需要 HTTP 協定來規範傳輸方式，Web Server 和 Application Server的溝通也需要一個協定來規範標準，例如 Common Gateway Interface，就是一個用來規範 Web Server 跟 Application Server 溝通的技術，除此之外還有 Java 的 Servlet，Python 的WSGI和Ruby的Rack 都是類似的技術。


---


1. Web Server 負責處理 HTTP 協定的傳輸以及接受 HTTP request 與回傳 HTTP response，但只能傳送靜態資料(已經寫死的檔案)。
2. Application Server 負責管理並執行業務邏輯以及資料庫的存取，但無法透過HTTP協定直接與 client 溝通，他只能接受從 Web Server 傳過來的 request 並回傳 執行後的結果。
3. Web Server 可以做為 Application Server 的代理接受 Client 的請求，並將請求傳給 Application Server，請他執行程式後並回傳結果給 Web Server，Web Server 透過 HTTP 回傳給 Client。
4. Web Server 與 Application Server 的溝通也需要一個傳輸協定(i.e Interface)，Common Gateway Interface是其中一個技術。