web服務器、Web中間件和Web容器的區別

目錄php

Web服務器java

中間件nginx

容器web

總結數據庫

Web開發的選擇apache


咱們常常會被Web服務器、Web容器和Web中間件這三個概念搞混。由於咱們常見的不少網站要麼是由IIS搭建,要麼是由Apache、Tomcat、Ngnix搭建。因此,咱們會把他們都叫成是Web服務器,由於他們都提供了Web服務,可讓咱們經過http協議訪問到。可是又有不少地方會說Tomcat是Servlet容器,而又有不少地方會說Tomcat是Web中間件!那麼,他們究竟是Web服務器仍是容器,仍是Web中間件呢???tomcat

懷着這個問題,我查遍了網上全部的資料,終於把這幾個概念好好的整理了一下。服務器

Web服務器

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

因此,咱們能夠把 IIS、Apache、Nginx、Tomcat等都稱爲Web服務器,由於他們都提供了web服務。app

中間件

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

Web中間件就是提供web應用軟件和系統軟件鏈接的軟件的一個總稱。

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

一、企業級應用框架的需求:在許多企業級應用中,例如數據庫鏈接、郵件服務、事務處理等都是一些通用企業需求模塊,這些模塊若是每次都由開發人員來完成的話,將會形成開發週期長和代碼可靠性差等問題。因而許多大公司開發了本身的通用模塊服務。這些服務性的軟件系列統稱爲中間件。

二、 爲了通用必需要提出規範,否則沒法達到通用:在上面的需求基礎之上,許多公司都開發了本身的中間件,但其與用戶的溝通都各有不一樣,從而致使用戶沒法將各個公司不一樣的中間件組裝在一塊爲本身服務。從而產生瓶頸。因而提出標準的概念。其實J2EE就是基於JAVA技術的一系列標準。

而且中間件技術已經不侷限於應用服務器、數據庫服務器。圍繞中間件,在商業中間件及信息化市場主要存在微軟陣營、Java陣營、開源陣營。

因此說咱們能夠把Tomcat、Weblogic、Jboss等叫作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 等

相關文章:Web中間件



 

本文同步分享在 博客「謝公子」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索