应用服务器和web服务器之间的区别是什么?


当前回答

简言之web服务器是通过HTTP请求向用户提供静态网页的服务器。应用服务器是承载系统的业务逻辑的服务器。它通常同时托管长时间运行的/批处理进程和/或互操作服务,这些服务不适合人类使用(REST/JSON服务、SOAP、RPC等)。

其他回答

Web服务器专门处理HTTP/HTTPS请求。它使用HTTP/HTTPS协议向web提供内容。

应用服务器通过任意数量的协议(可能包括HTTP)为应用程序提供业务逻辑。应用程序可以像调用对象上的方法一样使用此逻辑。在大多数情况下,服务器通过一个组件API公开这个业务逻辑,例如在Java EE(Java平台,企业版)应用服务器上找到的EJB(Enterprise JavaBean)组件模型。重点是web服务器通过http协议公开所有内容,而应用程序服务器不限于此。因此,应用服务器提供比web服务器多得多的服务,web服务器通常包括:

A(专有或非专有)API负载平衡、故障转移。。。对象生命周期管理状态管理(会话)资源管理(例如,到数据库的连接池)

大多数应用程序服务器都将Web服务器作为其组成部分,这意味着App Server可以执行Web服务器所能执行的任何操作。此外,AppServer还具有支持应用程序级服务的组件和功能,如连接池、对象池、事务支持、消息服务等。

应用服务器可以(但不总是)在web服务器上运行以执行程序逻辑,然后可以由web服务器交付程序逻辑的结果。这是web服务器/应用程序服务器场景的一个示例。Microsoft世界中的一个很好的例子是Internet Information Server/SharePoint Server关系。IIS是一个web服务器;SharePoint是一个应用程序服务器。SharePoint位于IIS之上,执行特定的逻辑,并通过IIS提供结果。例如,在Java世界中,Apache和Tomcat也有类似的场景。

由于web服务器非常适合静态内容,而应用服务器非常适合动态内容,因此大多数生产环境都将web服务器作为应用服务器的反向代理。这意味着在服务页面请求时,静态内容(如图像/静态html)由解释请求的web服务器提供。使用某种过滤技术(主要是请求资源的扩展),web服务器识别动态内容请求并透明地转发到应用服务器。

此类配置的示例是Apache HTTP Server和BEA WebLogic Server。Apache HTTP服务器是Web服务器,BEA WebLogic是应用程序服务器。在某些情况下,服务器是紧密集成的,如IIS和.NET运行时。IIS是web服务器。当配备.NET运行时环境时,IIS能够提供应用程序服务


Web Server                               Programming Environment
Apache                                   PHP, CGI
IIS (Internet Information Server)        ASP (.NET)
Tomcat                                   Servlet
Jetty                                    Servlet

Application Server                       Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's)   EJB
JBoss AS                                 EJB
MTS                                      COM+

实际上,Apache是一个web服务器,Tomcat是一个应用程序服务器。当HTTP请求到达web服务器时。然后,web服务器将静态内容发送回浏览器。是否有逻辑要做,然后将该请求发送到应用程序服务器。处理完逻辑后,将响应发送到web服务器并发送到客户端。

虽然两者之间可能存在重叠(某些web服务器甚至可以用作应用服务器),但IMHO最大的区别在于处理模型和会话管理:

在Web服务器处理模型中,重点是处理请求;“会话”的概念几乎是虚拟的。也就是说,通过在客户端和服务器之间传输状态表示(因此是REST)和/或将其串行化到外部持久存储(SQL server、Memcached等)来模拟“会话”。

在应用程序服务器中,会话通常更加明确,并且通常在整个“会话”期间以对象的形式存在于应用程序服务器的内存中。

这取决于具体的体系结构。一些应用程序服务器可能在本地使用web协议(XML/RCP/SOAP over HTTP),因此技术上几乎没有差别。通常,web服务器面向用户,通过HTTP/HTTPS提供各种内容,而应用服务器不面向用户,可能使用非标准或不可路由的协议。当然,使用RIA/AAJAX,差异可能会更加模糊,只向客户提供非HTML内容(JSON/XML),从而提供特定的远程访问服务。

大多数情况下,这些术语Web服务器和应用服务器可以互换使用。

以下是Web Server和Application Server功能的一些关键区别:

Web服务器旨在为HTTP内容提供服务。App Server还可以提供HTTP内容,但不限于HTTP。它可以提供其他协议支持,如RMI/RPCWeb服务器主要设计用于提供静态内容,尽管大多数Web服务器都有插件来支持Perl、PHP、ASP、JSP等脚本语言,这些服务器可以通过这些语言生成动态HTTP内容。大多数应用程序服务器都将Web服务器作为其组成部分,这意味着App Server可以执行Web服务器所能执行的任何操作。此外,AppServer还具有支持应用程序级服务的组件和功能,如连接池、对象池、事务支持、消息服务等。由于web服务器非常适合静态内容,而应用服务器非常适合动态内容,因此大多数生产环境都将web服务器作为应用服务器的反向代理。这意味着在处理页面请求时,静态内容(如图像/静态HTML)由解释请求的web服务器提供。使用某种过滤技术(主要是请求资源的扩展),web服务器识别动态内容请求并透明地转发到应用服务器

此类配置的示例是Apache Tomcat HTTP Server和Oracle(以前称为BEA)WebLogic Server。Apache Tomcat HTTP服务器是Web服务器,Oracle WebLogic是应用程序服务器。

在某些情况下,服务器是紧密集成的,如IIS和.NET运行时。IIS是web服务器。当配备.NET运行时环境时,IIS能够提供应用程序服务。