1. 程式人生 > >各種容器與伺服器的區別與聯絡:Servlet容器 WEB容器 Java EE容器 應用伺服器 WEB伺服器 Java EE伺服器

各種容器與伺服器的區別與聯絡: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的模組來呼叫Zend引擎執行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