1. 程式人生 > >web伺服器、Web中介軟體和Web容器的區別

web伺服器、Web中介軟體和Web容器的區別

目錄

Web伺服器

中介軟體

容器

總結

Web開發的選擇


我們經常會被Web伺服器、Web容器和Web中介軟體這三個概念搞混。因為我們常見的很多網站要麼是由IIS搭建,要麼是由Apache、Tomcat、Ngnix搭建。所以,我們會把他們都叫成是Web伺服器,因為他們都提供了Web服務,可以讓我們通過http協議訪問到。但是又有很多地方會說Tomcat是Servlet容器,而又有很多地方會說Tomcat是Web中介軟體!那麼,他們到底是Web伺服器還是容器,還是Web中介軟體呢???

懷著這個問題,我查遍了網上所有的資料,終於把這幾個概念好好的整理了一下。

Web伺服器

廣義的web伺服器(Web Server):提供web服務的軟體或主機,即Web伺服器軟體或裝有Web伺服器軟體的計算機。例如:IIS、apache、nginx、tomcat等。Web伺服器可以處理 HTTP 協議,響應針對靜態頁面或圖片的請求,進行頁面跳轉,或者把動態請求委託其它程式(它的擴充套件、某種語言的解釋引擎(php)、Web容器)。

所以,我們可以把 IIS、Apache、Nginx、Tomcat等都稱為Web伺服器,因為他們都提供了web服務。

中介軟體

中介軟體(Middleware)是提供系統軟體和應用軟體之間連線的軟體,以便於軟體各部件之間的溝通。中介軟體處在作業系統和更高一級應用程式之間。他充當的功能是:將應用程式執行環境與作業系統隔離,從而實現應用程式開發者不必為更多系統問題憂慮,而直接關注該應用程式在解決問題上的能力 。容器就是中介軟體的一種。

Web中介軟體就是提供web應用軟體和系統軟體連線的軟體的一個總稱。

我們來看看J2EE提出的背景:

1、企業級應用框架的需求:在許多企業級應用中,例如資料庫連線、郵件服務、事務處理等都是一些通用企業需求模組,這些模組如果每次都由開發人員來完成的話,將會造成開發週期長和程式碼可靠性差等問題。於是許多大公司開發了自己的通用模組服務。這些服務性的軟體系列統稱為中介軟體。

2、 為了通用必須要提出規範,不然無法達到通用:在上面的需求基礎之上,許多公司都開發了自己的中介軟體,但其與使用者的溝通都各有不同,從而導致使用者無法將各個公司不同的中介軟體組裝在一塊為自己服務。從而產生瓶頸。於是提出標準的概念。其實J2EE

就是基於JAVA技術的一系列標準。

並且中介軟體技術已經不侷限於應用伺服器、資料庫伺服器。圍繞中介軟體,在商業中介軟體及資訊化市場主要存在微軟陣營、Java陣營、開源陣營。

所以說我們可以把Apache、Tomcat、Jboss、Weblogic等叫做Web中介軟體。

相關文章:Web中介軟體

容器

容器:容器是中介軟體的一種,作為作業系統和應用程式之間的橋樑,給處於其中的應用程式元件提供一個環境,使應用程式直接跟容器中的環境變數互動,而不必關注其它系統問題。例如:tomcat(servlet容器),Jboss(EJB容器)。這些容器提供的介面嚴格遵守J2EE規範中的web application 標準。

web容器:我們把遵守J2EE規範標準的web伺服器就叫做J2EE中的web容器。處理 web服務的容器,例如tomcat(servlet容器),IIS(asp容器)。web容器用於給處於其中的應用程式元件(ASP、JSP)提供一個環境,是中介軟體的一個組成部分,它實現了對動態語言的解析。比如tomcat可以解析jsp,是因為其內部有一個servlet容器。

EJB容器(Enterprise java bean ):更具有行業領域特色。他提供給執行在其中的元件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的介面來獲得系統級別的服務。例如郵件服務、事務管理。

WEB容器和EJB容器在原理上是大體相同的,更多的區別是被隔離的外界環境。WEB容器更多的是跟基於HTTP的請求打交道。而 EJB容器不是。它是更多的跟資料庫、其它服務打交道。但他們都是把與外界的互動實現從而減輕應用程式的負擔。例如servlet不用關心http的細 節,直接引用環境變數session,request,response就行、EJB不用關心資料庫連線速度、各種事務控制,直接由容器來完成。

所以說,我們也可以把 IIS(asp容器)、Tomcat(servlet容器)、Jboss(EJB容器)等叫做Web容器

總結

通過上面的解釋,不知道你有沒有搞清楚這幾者之間的區別!其實,對於這些名詞,也並沒有一個十分清楚的概念說這個就是屬於這個,而不能屬於那個。他們之間很多是包含關係。

web伺服器:IIS、Apache、Nginx、Tomcat、Jboss、Jetty、Weblogic、Webshere、Glasshfish、Lighttpd等
web中介軟體:Tomcat、Jboss、Jetty、Weblogic、Webshere、Glasshfish等
web容器:IIS(asp容器)、Tomcat(servlet容器)、Jboss(EJB容器)

所以應該是  web伺服器>web中介軟體>web容器

Web開發的選擇

  • 一般本地開發的話,小專案,或者是個人開發建議的話,php使用apache、asp使用IIS、jsp使用tomcat
  • 大型的專案就用 jboss 或 webloigc
  • 大專案或者商業專案一般採用:weblgoic/webshere,其他的還有 jboss、glasshfish 等