各种容器和服务器之间的区别和联系

平时我们经常看到各种容器名称:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,还有各种服务器名称:应用服务器、WEB服务器、WEB应用服务器、JavaWEB应用服务器、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模块来调用ZendEngine执行PHP应用来处理PHP请求。

4-2、Tomcat、Jetty、WebLogic、Websphere、JBoss

Tomcat、Jetty、WebLogic、Websphere、JBoss都是Java(EE) WEB应用服务器。

拿最常用的Tomcat来说,Tomcat是Java Servlet,JavaServerPages,Java Expression Language和JavaWebSocket(Java EE)技术的开源实现。

因为可以通过HTTP提供HTML页面等静态内容的请求访问,所以是一个WEB服务器;

因为实现了Servlet规范,所以也是一个Servlet容器,可以运行Servlet程序;

因为可以通过Servlet容器,调用Servlet处理动态请求,所以也是一个应用服务器;

所以,可以说Tomcat是Java(EE) WEB应用服务器。

4-3、Nginx + Tomcat的WEB应用服务器(集群)

一般在实际应用中,先是通过Nginx反向代理服务器接收请求,匹配分离动态/静态请求(动静分离),如果是静态请求,则转发到另外的Nginx WEB服务器上,返回静态内容;如果是动态请求,则转发到后面的Tomcat应用服务器,处理动态请求的业务逻辑。

http://blog.csdn.net/lkforce/article/details/73649708

原文地址:https://www.cnblogs.com/softidea/p/8206598.html

时间: 2024-08-29 15:17:28

各种容器和服务器之间的区别和联系的相关文章

什么是云虚拟主机以及和云服务器之间的区别

什么是云虚拟主机以及和云服务器之间的区别 虚拟主机我们都知道是什么,云主机我们也知道这个概念,云虚拟主机是什么样的产品,它和虚拟主机.云主机有什么不一样的呢?下面我们关于这两个问题简单的为大家介绍一下. 导语:虚拟主机我们都知道是什么,云主机我们也知道这个概念,云虚拟主机是什么样的产品,它和虚拟主机.云主机有什么不一样的呢?下面我们关于这两个问题简单的为大家介绍一下. 首先我们来看一下什么是云虚拟主机 云虚拟主机是一款虚拟主机产品,它所具备的要求比传统的虚拟主机更高,不管是在性能还是稳定和价格方

虚拟主机、VPS和云主机、服务器之间的区别与联系

一.四者的概念: (1) 虚拟主机从互联网诞生至今,大部分站长都是从虚拟主机开始学习建站的.所谓虚拟主机就是一台服务器上有许多网站,大家共享这台服务器的硬件和带宽.如果它发生故障,那么上面的所有网站都无法访问. (2) VPS主机也叫作虚拟专用服务器,它是将一部服务器分割成多个虚拟专享服务器的优质服务.每个VPS都可分配独立公网IP地址.独立操作系统.独立超大空间.独立内存.独立CPU资源.独立执行程序和独立系统配置等. (3) 云主机也可以看成是新一代的共享主机,首先主机公司将它的硬件和网络线

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器(也叫www服务器)上获取网页文档的内容. 2. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器. 3. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件.只要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为

Ubuntu桌面版本和服务器版本之间的区别(转载)

转载自:http://blog.csdn.net/fangaoxin/article/details/6335992 http://www.linuxidc.com/Linux/2010-11/29740.htm 7天免费VPN服务:http://eaesoftvpn.azurewebsites.net/ 说道Linux想必ubuntu的大名大家早就听说,很多都是因为知道ubuntu才知道linux的.但是要提到安装ubuntu那颗就有点犯难了,因为ubuntu的版本太多了,选择哪个安装呢?这确

IOS之nil、Nil、NSULL、NULL之间的区别

其实早就想研究一下nil.Nil.NULL和NSNull之间的区别,只是工作上除了nil,其它的几乎少有用到,所以一直拖到今天.有时候感觉自己越来越浮躁,对细微处的知识理解不够深入,因此这里给自己提个醒--在以后的工作当中要始终保持一种钻研的精神! 言归正传,我们来分别介绍一下这四种类型: 一.nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉: 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为ni

servlet与Javabean之间的区别

在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean/>调用JavaBean而其他类,可以和一般java中一样使用.  Bean的参数中还可以指定范围, <jsp:useBean   scope="application"   />该Bean在服务器的JVM中将只有一个实例. Bean是和WebServer相关的,不同的页面可以通过Bean 交互.

Activex、OLE、COM、OCX、DLL之间的区别(转)

先明确组件(Component)和对象(Object)之间的区别: 组件是一个可重用的模块,它是由一组处理过程.数据封装和用户接口组成的业务对象(Rules Object).组件看起来像对象,但不符合对象的学术定义. 它们的主要区别是: 1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用: 2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序: 3)组件为模块重用,而对象为代码重用.现在,比较流行的组件模型有COM(Component

servlet,RMI,webservice之间的区别

最近项目中有提供或者调用别的接口,在纠结中到底是用servlet还是用webservice,所以上网查看了下他们以及RMI之间的区别,方便加深了解. 首先比较下servlet和webservice下  请求:     servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的httprequest即可. 规定了四个范围:pageContext.request.sessio

Tomcat、Weblogic、Jboss、WebSphere之间的区别和联系

Tomcat.Weblogic.Jboss.WebSphere之间的区别和联系 Websphere: 这是ibm公司的网上的信息.更详细的信息可以访问网站: http://www-306.ibm.com/software/cn/websphere/ WebSphere 产品家族和解决方案 业务整合整合服务器提供了一套用于应用程序整合和业务流程自动化的中央基础设施. 应用服务器应用服务器提供了运行互操作应用程序的平台. IBM Support for Apache Geronimo IBM Sup