平时我们经常看到各种容器名称:Servlet容器、WEB容器、JAVA WEB容器、Java EE容器等,还有各种服务器名称:应用服务器、WEB服务器、WEB应用服务器、JavaWEB应用服务器、Java EE服务器等,这么多相似名称,难以弄明白它们之间的区别与联系 。
1、容器与服务器的联系
文章插图
容器是位于应用程序/组件和服务器平台之间的接口集合,使得应用程序/组件可以方便部署到服务器上运行 。
2、各种容器的区别/联系
文章插图
2-1、容器(Containers)
容器通常理解就是装东西的,我们这里说技术上的容器就是可以部署应用程序,并在上面运行的环境 。
一般来说,它处理屏蔽了服务器平台的复杂性,使得应用程序在它的基础上可以方便快捷的部署;而对于应用程序来说,它就是位于应用程序和平台之间的接口集合 。
容器管理组件的生命周期,向应用程序组件分派请求,并提供与上下文数据(如关于当前请求的信息)的接口 。
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请求 。
推荐阅读
- ?眼皮快速消肿的妙招
- 如何快速分析大型系统架构?
- 关于 Spring 注解容器配置的那些事,掌握这几点,不再难
- 怎样快速勃起硬度
- 微信个人公众号认证内测,怎么才能快速通过
- Spring容器6种注入方式
- 百万级MySQL的数据量,该如何快速的完成数据迁移?
- 三分钟快速搭建分布式高可用的Redis集群
- Java 分布式任务调度平台:PowerJob 快速开始+配置详解
- 淘宝活动中的商品可以改库存吗? 淘宝库存怎么快速修改