在JavaEE 開發Web中,我們經常會聽到Web服務器(Web Server)、Web容器(Web Container)、應用服務器(Application Server),等容易混淆不好理解名詞。本文介紹對三者的理解,以及區別與聯系,如果有不正確的地方還請指正。
由上圖可以看到一個標准的http處理流程:
- 首先通過Web Server 接受Http請求;
- 比如html、css等靜態資源 Web Server 可自行處理;
- 當遇到動態資源(jsp等)時候Web Server 將請求轉接至Application Server中,由Application Server處理;
Web服務器(Web Server)
Web Server
或者叫 HTTP Server
,主要用於操作Http請求,包括接受客戶端的請求以及響應。它可以處理請求,也可以將請求轉發至其他服務器。
代表:Nginx
、apache
、IIS
Web Server市場占有率如下
應用服務器(JavaEE Application Server)
Application Server 具備了 Web Server 處理http請求的能力(但可能沒有Web Server專業)同時也支持了JavaEE 技術比如JMS、DI、JPA、Transactions、Concurrency等,同時也包含了Web Container,如下圖。
代表:Bea WebLogic
, IBM WebSphere
應用服務器可以選擇使用上文所說的 WebLogic
和 WebSphere
這種重量級產品外,也可以使用類似與Tomcat
、jetty
這樣的web containner 再加上第三方的框架(spring,hibernate等)來構建自己的Application Server
。
JavaEE Application Server市場占有率
組合應用
一個典型的JavaEE系統可以由兩部分構成首先是Web Server 用於處理靜態資源,然后是JavaEE Application Server 用於處理業務的動態資源。而這兩部分可以是單獨的服務器例如Nginx+WebSphere也可以在一個服務器上完成比如Tomcat(Tomcat即可以處理靜態資源又可以處理動態的Servlet)。
參考鏈接
[3]https://coderanch.com/t/598746/Websphere/application-server-web-server-web