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


当前回答

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

其他回答

IBM在这两者之间做了一个非常好的比较:

严格定义,web服务器是应用程序服务器的一个子集。web服务器主要响应来自web浏览器的超文本传输协议(HTTP)请求,提供静态web内容,例如HTML页面、文件、图像和视频。应用程序服务器通常也可以交付web内容,但其主要工作是实现最终用户客户端和服务器端应用程序代码之间的交互,这些代码表示通常称为业务逻辑的内容,以生成和交付动态内容,如交易结果、决策支持或实时分析。应用服务器的客户端可以是应用程序自己的最终用户UI、web浏览器或移动应用程序,客户端-服务器交互可以通过任意数量的通信协议进行。然而,在实践中,web服务器和应用程序服务器之间的界限变得更加模糊,特别是随着web浏览器成为应用程序客户端的选择,以及用户对web应用程序和web应用程序性能的期望值的增加。大多数web服务器支持脚本语言插件(例如,ASP、JSP、PHP、Perl),使web服务器能够基于服务器端逻辑生成动态内容。越来越多的应用服务器不仅具有web服务器功能,而且使用HTTP作为其主要协议,并支持其他协议(例如CGI和CGI变体)与web服务器进行接口。它们还允许web应用程序利用反向代理、集群、冗余和负载平衡服务等服务,从而提高性能和可靠性,并允许开发人员减少对基础设施的关注,而更多地关注编码。为了使事情更加混乱,许多web服务器和一些应用程序服务器被称为web应用程序服务器,或者称为它们自己。底线是,当今最流行的web服务器和应用程序服务器是两者的混合。您现在使用的大多数日益丰富的应用程序都是静态web内容和动态应用程序内容的组合,通过web服务器和应用程序服务器技术的组合提供。

这两个术语都非常通用,一个包含另一个,在某些情况下反之亦然。

Web服务器:使用http协议向Web提供内容。应用程序服务器:托管并公开业务逻辑和流程。

我认为主要的一点是web服务器通过http协议公开所有内容,而应用程序服务器不限于此。

也就是说,在许多情况下,您会发现web服务器被用于创建应用程序服务器的前端,即它公开了一组网页,允许用户与应用程序服务器中的业务规则进行交互。

大多数情况下,这些术语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能够提供应用程序服务。

最大的区别是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑。

从…起https://en.wikipedia.org/wiki/Web_server

web服务器是通过HTTP处理请求的计算机系统,HTTP是用于在万维网上分发信息的基本网络协议。该术语可以指整个系统,或者具体指接受和监督HTTP请求的软件。

从…起https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

应用程序服务器运行在web服务器(例如Apache或Microsoft Internet Information Services(IIS))后面,并且(几乎总是)运行在SQL数据库(例如PostgreSQL、MySQL或Oracle)前面。

Web应用程序是在应用程序服务器上运行的计算机代码,用应用程序服务器支持的语言编写,并调用应用程序服务器提供的运行库和组件。