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

一、容器與服務器的聯繫瀏覽器

                                         

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

二、各類容器的區別/聯繫網絡

                                         

 


2-一、容器(Containers)
       容器一般理解就是裝東西的,咱們這裏說技術上的容器就是能夠部署應用程序,並在上面運行的環境。網站

       通常來講,它處理屏蔽了服務器平臺的複雜性,使得應用程序在它的基礎上能夠方便快捷的部署;而對於應用程序來講,它就是位於應用程序和平臺之間的接口集合。.net

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

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

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

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

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

2-三、Java WEB容器
       WEB容器:能夠部署多個WEB應用程序的環境。

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

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

       因此,完整的Java WEB容器包含Servlet容器。

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

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

       因此,完整的Java EE容器包含Java WEB容器(Servlet容器)、EJB容器等。

三、各類服務器的區別/聯繫

                               

 


3-一、服務器(Server)
       服務器是提供計算服務的設備。因爲服務器須要響應服務請求,並進行處理,所以通常來講服務器應具有承擔服務而且保障服務的能力。

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

3-二、應用服務器
       應用程序:是指爲針對使用者的某種應用目的所編寫的軟件。

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

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

3-三、WEB服務器
       WEB:現普遍譯做網絡、互聯網等技術領域。表現爲三種形式,即超文本(hypertext)、超媒體(hypermedia)、超文本傳輸協議(HTTP)等。

       WEB服務器:通常指網站服務器,能夠向瀏覽器等WEB客戶端提供文檔瀏覽、數據文件下載等WEB服務。

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

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

       若是不嚴格區分,應用服務器包含WEB服務器,由於WEB服務器是WEB服務應用程序實現的。

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

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

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

四、舉例說明容器以及服務器的聯繫
4-一、Apache、Nginx、IIS
       Apache、Nginx、IIS是目前最主流的三個Web服務器。

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

4-二、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-三、Nginx + Tomcat的WEB應用服務器(集羣)

                                               

 


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

原文:https://blog.csdn.net/tjiyu/article/details/53148174

相關文章
相關標籤/搜索