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源创计划”,欢迎正在阅读的你也加入,一块儿分享。