很久很久以前,web & app Server 的任務是...
在古早的冰河時期,網頁還不能跟使用者互動,web server 主要的任務是傳送靜態檔案。
當瀏覽器透過 HTTP 發送 request,web server 就會回覆 response 並傳送需要的檔案。
舉個例子:使用者點擊 Lidemy 官網的課綱,web server 就回傳已經寫好的 HTML 跟 CSS。
app server 主要的任務是執行程式碼及讀取資料庫,app server 只能透過 web server 跟瀏覽器溝通。
時代在走,科技不斷進步
時代演進,使用者對網頁需求越高,兩者的界線也就越模糊了。在這裡把手機比喻為 web server;電腦比喻為 app server。
以前手機只能傳簡訊跟通話,可能還無法想像手機做簡報、玩遊戲等等。電腦則是佔據了一整個房間大小,主要拿來做運算用的。
嚴格的定義來說,可以把 web server 想成是一個可以獨立運作的機器,而這台機器存在於 app Server 這台更大的機器裡面。
現在 web server 不只有傳送靜態檔案,也可以用插件來產生動態的資料了!就像是手機主要工作是通話用,但也可以拿來工作;電腦主要是工作用,但也可以拿來通話。
小結:
web server: 傳靜態檔案、靠 HTTP 跟瀏覽器溝通
app server: 執行程式碼及讀取資料庫、靠 web server 跟瀏覽器溝通
app server 裡面包含了 web server,web 代理客戶的請求並跟 app 拿資料。
當代 server 通常是 web application server 混血版本,流行的有 Nginx、Apache 等等,類似油電混合車的概念。
參考資料:
Web server vs Application server
淺談 Web Server and Application Server
Open source web servers and application servers
註:這個主題要深應該可以更深,留待未來慢慢增加知識。