各種容器與服務器的區別與聯繫:Servlet容器 WEB容器 Java EE容器 應用服務器 WEB服務器 Java EE服務器

各種容器與服務器的區別與聯繫 

Servlet容器 WEB容器 Java EE容器 應用服務器 WEB服務器  Java EE服務器

      

       平時我們經常看到各種容器名稱:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,還有各種服務器名稱:應用服務器、WEB服務器、WEB應用服務器、Java WEB應用服務器、Java EE服務器等,這麼多相似名稱,難以弄明白它們之間的區別與聯繫。

       下面我們嘗試從它們的定義中,區分它們,找出他們之間的聯繫,最後通過Apache、nginx、tomcat等舉例說明容器以及服務器的聯繫。

1、容器與服務器的聯繫

       如上圖,我們先來看下容器與服務器的聯繫:容器是位於應用程序/組件和服務器平臺之間的接口集合,使得應用程序/組件可以方便部署到服務器上運行。

2、各種容器的區別/聯繫

2-1、容器(Containers)

       容器通常理解就是裝東西的,我們這裏說技術上的容器就是可以部署應用程序,並在上面運行的環境

       一般來說,它處理屏蔽了服務器平臺的複雜性,使得應用程序在它的基礎上可以方便快捷的部署;而對於應用程序來說,它就是位於應用程序和平臺之間的接口集合

       容器管理組件的生命週期,嚮應用程序組件分派請求,並提供與上下文數據(如關於當前請求的信息)的接口。

       注意,容器技術虛擬化(如Docker 應用容器引擎)不在本文關注範圍內。

2-2、Servlet容器

       Servlet:屬於Java EE重要技術規範,構建了"接收請求--調用servlet程序處理--返回響應"基本模型。

       Servlet程序:Java提供了開發Servlet程序的API,該API可以說Servlet容器的一部分,它對接應用程序與Servlet容器;

       Servlet容器:就是實現了Servlet技術規範的部署環境,它可以部署運行Servlet程序。

2-3、Java WEB容器

       WEB容器:可以部署多個WEB應用程序的環境。

       Java WEB容器:實現了Java EE規定的WEB應用技術規範的的部署環境。

       Java EE WEB應用技術規範:Servlet、JSP(JavaServer Pages)、Java WebSocket等。

       所以,完整的Java WEB容器包含Servlet容器

2-4、Java EE容器

       Java EE容器:實現了Java EE技術規範的部署環境。

       Java EE技術規範:除了上面說的Servlet、JSP等Java EE WEB應用技術規範,還包括EJB(Enterprise JavaBeans)等許多技術規範。

       所以,完整的Java EE容器包含Java WEB容器(Servlet容器)、EJB容器等

3、各種服務器的區別/聯繫

3-1、服務器(Server)

       服務器是提供計算服務的設備。由於服務器需要響應服務請求,並進行處理,因此一般來說服務器應具備承擔服務並且保障服務的能力。

       簡單來說,服務器是提供某些服務的設備

3-2、應用服務器

       應用程序:是指爲針對使用者的某種應用目的所編寫的軟件。

       應用服務器:就是運行應用程序,提供應用程序所實現服務的設備

       通常來說,服務器端的應用程序實現各種業務邏輯,應用服務器通過各種協議把這些業務邏輯曝露給客戶端的程序。它提供了訪問商業邏輯的途徑,以供客戶端應用程序使用。應用服務器使用此業務邏輯就像調用對象的一個方法一樣。

3-3、WEB服務器

       WEB:現廣泛譯作網絡、互聯網等技術領域。表現爲三種形式,即超文本(hypertext)、超媒體(hypermedia)、超文本傳輸協議(HTTP)等。

       WEB服務器:一般指網站服務器,可以向瀏覽器等WEB客戶端提供文檔瀏覽、數據文件下載等WEB服務。

       簡單來說,WEB服務器是提供網上信息瀏覽等WEB服務的設備

3-4、WEB應用服務器

       上面我們把應用服務器和WEB服務器嚴格區分:應用服務器通過應用程序接口(通常是網絡請求API)把業務邏輯暴露給客戶端應用程序。而WEB服務器通過HTTP提供靜態內容給瀏覽器等客戶端。

       如果不嚴格區分,應用服務器包含WEB服務器,因爲WEB服務器是WEB服務應用程序實現的。

       WEB應用服務器:結合應用服務器和WEB服務器,可以說,它是帶應用服務器的Web服務器,接收HTTP請求後,既能返回頁面等靜態內容,又能處理業務邏輯返回數據

3-5、Java EE服務器

       Java EE服務器是實現Java EE技術規範,並提供標準Java EE服務的應用程序服務器。

       Java EE服務器有時稱爲應用服務器,因爲它們允許您向客戶端提供應用數據,就像Web服務器向Web瀏覽器提供Web頁面一樣。

4、舉例說明容器以及服務器的聯繫

4-1、Apache、Nginx、IIS

       Apache、Nginx、IIS是目前最主流的三個Web服務器。

       但是可以用它們來構建WEB應用服務器,通常它們發現一個請求是動態請求,就通過CGI、ISAPI、特殊管道等協議接口調用後面的應用服務器來協同處理請求。如Nginx通過fastCGI模塊來調用ZendEngine執行PHP應用來處理PHP請求。

4-2、Tomcat、Jetty、WebLogic、Websphere、JBoss

       Tomcat、Jetty、WebLogic、Websphere、JBoss都是Java(EE) WEB應用服務器。

       拿最常用的Tomcat來說,Tomcat是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket(Java EE)技術的開源實現。

       因爲可以通過HTTP提供HTML頁面等靜態內容的請求訪問,所以是一個WEB服務器;

       因爲實現了Servlet規範,所以也是一個Servlet容器,可以運行Servlet程序;

       因爲可以通過Servlet容器,調用Servlet處理動態請求,所以也是一個應用服務器;

       所以,可以說Tomcat是Java(EE) WEB應用服務器

4-3、Nginx + Tomcat的WEB應用服務器(集羣)

       一般在實際應用中,先是通過Nginx反向代理服務器接收請求,匹配分離動態/靜態請求(動靜分離),如果是靜態請求,則轉發到另外的Nginx WEB服務器上,返回靜態內容;如果是動態請求,則轉發到後面的Tomcat應用服務器,處理動態請求的業務邏輯。

 

 

       到這裏,我們對各種容器以及各種服務器它們之間的區別與聯繫有了一個清楚的認識,後面將重點關注Java在Tomcat上的應用剖署,以及嘗試進行nginx+Tomcat的WEB應用服務的相關配置……

 

 

【參考資料】

1、Oracle Java官網相關文檔:http://www.oracle.com/technetwork/cn/java/index.html

2、Java官方站點:https://www.java.com/zh_CN

3、百度百科各詞條

4、Nginx詳解:http://blog.csdn.net/tjiyu/article/details/53027619

5、Tomcat:http://tomcat.apache.org/index.html

發佈了57 篇原創文章 · 獲贊 248 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章