应用服务器和Web服务器有什么区别?

应用服务器和Web服务器有什么区别?

904230 次浏览

应用程序服务器通常被设计和部署为促进更长时间运行的进程,这些进程也将更加资源密集型。

Web服务器通常用于非资源密集型的短突发。这主要是为了方便提供基于Web的流量。

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

应用程序服务器是一台机器(实际上是在某台机器上运行的可执行进程),它“侦听”(在任何通道上,使用任何协议)来自客户端的对其提供的任何服务的请求,然后根据这些请求执行某些操作。

Web服务器是在一台机器上运行的进程,该机器使用“互联网”协议之一(超文本传输协议,https,ftp等)专门在TCP/IP通道上“侦听”,并根据这些传入的请求执行任何操作……一般来说,(如原始定义),它获取/生成并返回一个html网页给客户端,要么从服务器上的静态html文件中获取,要么根据传入客户端请求中的参数动态构建。

Web服务器运行HTTP协议来为网页提供服务。应用程序服务器可以(但并非总是)在Web服务器上运行以执行程序逻辑,然后可以由Web服务器交付其结果。这是Web服务器/应用程序服务器场景的一个示例。

Microsoft世界中的一个很好的例子是Internet Information Server/SharePoint Server关系。IIS是Web服务器;SharePoint是应用程序服务器。SharePoint位于IIS的“顶部”,执行特定逻辑,并通过IIS提供结果。

例如,在Java世界中,Apache和Tomcat也有类似的情况。

大多数时候,这些术语Web服务器和应用程序服务器可以互换使用。

以下是Web Server和Application Server功能的一些主要区别:

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

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

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

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

  • Web服务器:使用超文本传输协议向Web提供内容。

  • <强>应用服务器:托管并公开业务逻辑和流程。

我认为主要的一点是,Web服务器通过超文本传输协议公开一切,而应用服务器则不受其限制。

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

正如Rutesh和jmservera指出的那样,这种区别是模糊的。从历史上看,它们是不同的,但通过90年代,这两个以前截然不同的类别混合了功能并有效地合并了。在这一点上,可能最好想象“应用服务器”产品类别是“网络服务器”类别的严格超集。

一段历史。在Mosaic浏览器和超链接内容出现的早期,有一种叫做“网络服务器”的东西,通过HTTP提供网页内容和图像。大多数内容是静态的,HTTP 1.0协议只是一种传送文件的方式。“网络服务器”类别很快发展到包括CGI功能——有效地在每个网络请求上启动一个进程来生成动态内容。HTTP也成熟了,产品变得更加复杂,具有缓存、安全和管理功能。随着技术的成熟,我们从Kiva和NetDynamics获得了公司特定的Java基于服务器端的技术,最终都合并到JSP中。我想是在1996年,微软在Windows NT 4.0中添加了ASP。静态Web服务器学到了一些新技巧,因此它在许多场景中都是一个有效的“应用服务器”。

在另一个平行类别中,应用服务器已经发展并存在了很长时间。公司为Tuxedo,TopEnd,Encina等Unix交付的产品,在哲学上源自大型机应用程序管理和监控环境,如IMS和CICS。微软的产品是Microsoft Transaction Server(MTS),后来演变成COM+。这些产品中的大多数指定了“封闭”产品特定的通信协议,以将“胖”客户端与服务器互连。(对于Encina,通信协议是DCE RPC;对于MTS,是DCOM;等。)1995/96年,这些传统的应用服务器产品开始嵌入基本的HTTP通信能力,首先是通过网关。界限开始模糊。

Web服务器在处理更高的负载、更多的并发和更好的功能方面变得越来越成熟。应用服务器提供了越来越多基于HTTP的通信能力。

在这一点上,“应用服务器”和“Web服务器”之间的界限是模糊的。但作为强调问题,人们继续以不同的方式使用这些术语。当有人说“Web服务器”时,你通常会想到以HTTP为中心的、面向Web UI的应用程序。当有人说“应用服务器”时,你可能会想到“更重的负载、企业功能、事务和排队、多通道通信(HTTP+更多)”。但通常是同一产品同时满足两组工作负载需求。

  • WebSphere,IBM的“应用服务器”有自己的捆绑Web服务器。
  • WebLogic,另一个传统的应用服务器也是如此。
  • Windows是Microsoft的应用服务器(除了它的文件和打印服务器、媒体服务器等),捆绑了IIS。

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

这取决于特定的体系结构。一些应用程序服务器可能本身就使用网络协议(XML/RPC/SOAP over HTTP),所以技术上的差异很小。通常,网络服务器是面向用户的,通过HTTP/HTTPS提供各种内容,而应用程序服务器不是面向用户的,可能使用非标准或不可路由的协议。当然,对于RIA/AJAX,这种差异可能会进一步模糊,仅向抽送特定远程访问服务的客户端提供非超文本标记语言内容(JSON/XML)。

现在,许多程序结合了两者的元素——服务超文本传输协议请求(Web服务器)和处理业务逻辑(应用服务器)

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

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

在应用服务器中,会话通常更显式,并且通常在“会话”的整个持续时间内以存在于应用服务器内存中的对象的形式出现。

一方面,Web服务器通过HTTP协议提供Web内容(超文本标记语言和静态内容)。另一方面,应用程序服务器是一个容器,您可以在其上通过各种协议(包括n层架构中的HTTP)构建业务逻辑和流程并将其公开给客户端应用程序。

因此,应用程序服务器提供的服务比Web服务器多得多,通常包括:

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

AFAIK,ATG Dynamo是90年代末的第一个应用服务器之一(根据上面的定义)。在2000年初,它是一些专有应用服务器的统治,如ColdFusion(CFML AS),BroadVision(服务器端JavaScript AS)等。但没有一个真正在Java应用服务器时代幸存下来。

正如许多人之前所说,Web服务器处理HTTP请求,而应用程序服务器处理分布式组件的请求。因此,也许理解差异的最简单方法是比较这两种产品提供的编程环境。

Web服务器->编程环境

IIS:ASP(. NET)

Tomcat:Servlet

Jetty:Servlet

Apache:PHP、CGI

应用服务器->编程环境

MTS: COM+

中文全称:EJB

JBoss: EJB

WebLogic应用服务器:EJB

关键的区别在于应用程序服务器支持一些分布式组件技术,提供远程调用和分布式事务等功能,例如世界上的EJB或Microsoft平台上的com+。Http服务器通常支持一些更简单的编程环境,通常是脚本,例如Microsoft的ASP(. NET)或基于Servlet的,包括JSP和许多其他Java或Apache的PHP和CGI。

过去属于应用服务器领域的其他功能,如负载平衡、集群、会话故障转移、连池等,也可以直接或通过一些第三方产品在Web服务器上使用。

最后,值得注意的是,像Spring Framework这样的“轻量级容器”进一步扭曲了情况,它们通常以更简单的方式补充应用服务器的用途,而没有应用服务器基础设施。而且由于应用程序中的分发方面正在从分布式组件转向服务范式和SOA架构,留给传统应用服务器的空间越来越少。

用Java术语来说,还有一个:web容器(或者更严格地说,servlet容器)。它位于Web服务器和应用程序服务器之间。

Java术语中的Web容器是一个应用程序服务器,它基本上只有实现了JavaEE的JSP/Servlet部分,缺乏JavaEE的几个核心部分,例如EJB支持。一个例子是Apache Tomcat。

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

应用服务器通过任意数量的协议(可能包括HTTP)为应用程序提供业务逻辑。应用程序可以像调用对象的方法一样使用此逻辑。在大多数情况下,服务器通过组件API公开此业务逻辑,例如在JavaEE(JavaPlatform,企业版)应用服务器上找到的EJB(Enterprise JavaBean)组件模型。要点是Web服务器通过超文本传输协议公开所有内容,而应用程序服务器不受其限制。因此,应用程序服务器提供的服务比Web服务器多得多,通常包括:

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

大多数应用服务器都将Web Server作为其中不可或缺的一部分,这意味着App Server可以做任何Web Server能够做的事情。此外,App Server还具有支持应用程序级服务的组件和功能,例如连接池、对象池、事务支持、消息服务等。

应用程序服务器可以(但并不总是)在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 Server是Web服务器,BEA WebLogic是应用程序服务器。在某些情况下,服务器是紧密集成的,例如IIS和. NET运行时。IIS是Web服务器。当配备. NET运行时环境时,IIS能够提供应用程序服务


Web Server                               Programming EnvironmentApache                                   PHP, CGIIIS (Internet Information Server)        ASP (.NET)Tomcat                                   ServletJetty                                    Servlet
Application Server                       Programming EnvironmentWAS (IBM's WebSphere Application Server) EJBWebLogic Application Server (Oracle's)   EJBJBoss AS                                 EJBMTS                                      COM+

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

这是一个详细的答案,其中包含一些场景,以清楚地理解差异和相似性,以及两者如何协同工作。

应用服务器是一个有时与web服务器混合的术语。虽然Web服务器主要处理HTTP协议,但应用程序服务器处理几种不同的协议,包括但不限于HTTP

Web服务器的主要工作是显示网站内容,应用服务器是负责逻辑,用户和显示内容之间的交互。应用服务器是共同努力与Web服务器,其中一个显示,另一个交互。

在服务器和客户端之间来回传递的信息不仅限于简单的显示标记,还包括两者之间的交互。

在大多数情况下,服务器创建此通过组件API进行交互,例如J2EE(Java2平台)EJB(Enterprise JavaBean)等不同的应用软件模型。

输入图片描述

一个例子:

了解应用程序服务器与Web服务器一起工作的场景与没有应用程序服务器的场景之间差异的最佳方法是通过在线商店。

场景1:没有应用服务器的Web服务器

您有一个只有Web服务器而没有应用程序服务器的在线商店。该网站将提供一个显示,您可以在其中选择产品。当您提交查询时,该网站会执行查找并将超文本标记语言结果返回给其客户端。Web服务器将您的查询直接发送到数据库服务器(请耐心等待,我将在我们的下一个核心中解释这个)并等待响应。一旦收到,Web服务器将响应公式化为超文本标记语言文件并将其发送到您的Web浏览器。每次运行查询时,服务器和数据库服务器之间都会发生这种来回通信。

场景2:带有应用程序服务器的Web服务器

如果您要运行的查询之前已经完成,并且此后没有更改任何数据,则服务器将生成结果,而无需将请求发送到数据库服务器。这允许实时查询,其中第二个客户端可以访问相同的信息并接收实时、可靠的信息,而无需向数据库服务器发送另一个重复的查询。服务器基本上充当数据库服务器和Web服务器之间的中间人。这允许在第一种场景中提取的信息可重用,因为此信息嵌入在特定的“自定义”超文本标记语言页面中,因此这不是一个可重用的过程。第二个客户端将不得不再次请求信息,并接收另一个带有所请求信息的超文本标记语言嵌入页面-效率极低。更不用说这种类型的服务器非常灵活,因为它能够管理自己的资源,包括安全性,事务处理,消息传递和资源池。

为了支持各种复杂的任务,该服务器必须具有内置冗余、强大的处理能力和大量的RAM来处理它实时提取的所有数据。

这两者之间的边界越来越薄。

应用服务器向客户端公开业务逻辑。这意味着应用服务器由一组方法(不完全是,甚至可以是一台允许许多人在其上运行软件的网络计算机)组成来执行业务逻辑。因此,它将简单地输出所需的结果,而不是超文本标记语言内容。(类似于方法调用)。因此,它不是严格基于HTTP的。

但是网络服务器将超文本标记语言内容传递给网络浏览器(严格基于HTTP)。网络服务器只能处理静态的网络资源,但是服务器端脚本的出现允许网络服务器也处理动态内容。网络服务器接收请求并将其定向到相关脚本(PHP、JSP、CGI脚本等)来创建发送给客户端的超文本标记语言内容。一旦接收到内容,网络服务器将向客户端发送文本超标记语言页面。

但是,现在这两个服务器一起使用。其中Web服务器接受请求,然后调用脚本来创建超文本标记语言内容。然后,脚本将再次调用应用程序服务器LOGIC(例如检索事务详细信息)来填充超文本标记语言内容。

因此,这两台服务器都得到了有效的使用。

因此。我们可以有把握地说,现在,在大多数情况下,Web服务器被用作应用程序服务器的子集。但实际上并非如此。

我读过很多关于这个主题的文章,发现这个文章很方便。

web服务器

运行python -m 'SimpleHTTPServer'并转到http://localhost:8080。您看到的是一个运行中的Web服务器。该服务器只是通过HTTP提供存储在您计算机上的文件。关键点是所有这些都是在HTTP协议之上完成的。例如,也存在FTP服务器,它们做完全相同的事情(提供存储的文件),但在不同的协议之上。

应用服务器

假设我们有一个像下面这样的小应用程序(来自烧瓶的片段)。

@app.route('/')def homepage():return '<html>My homepage</html>'
@app.route('/about')def about():return '<html>My name is John</html>'

这个小示例程序将URL/映射到函数homepage(),将/about映射到函数about()

要运行此代码,我们需要一个应用程序服务器(例如Gunicorn)-一个可以侦听客户端请求并使用我们的代码动态返回一些内容的程序或模块。在示例中,我们只是返回一些非常糟糕的超文本标记语言。

其他人都在谈论的业务逻辑是什么?好吧,由于URL映射到我们代码库中的某个特定位置,我们假设展示了一些关于我们的程序如何工作的逻辑。


概述

web服务器-提供存储在某处的文件(最常见的是. css、. html、. js)。常见的Web服务器是Apache、Nginx甚至Python的SimpleHTTPServer。

应用服务器-为动态生成的文件提供服务。本质上,大多数Web服务器都有某种插件,甚至带有内置功能来做到这一点。还有严格的应用程序服务器,如Gunicorn(Python)、Unicorn(Ruby)、uWSGI(Python)等。

请注意,您实际上可以使用应用程序服务器的代码构建Web服务器。这是在开发过程中的某些情况下完成的,您不希望在计算机上运行大量不同的服务器。

以上所有这些都让一些非常简单的事情变得过于复杂。应用程序服务器包含一个Web服务器,应用程序服务器只是比标准Web服务器多了几个添加/扩展。如果你以TomEE为例:

CDI - Apache OpenWebBeansEJB - Apache OpenEJBJPA - Apache OpenJPAJSF - Apache MyFacesJSP - Apache TomcatJSTL - Apache TomcatJTA - Apache Geronimo TransactionServlet - Apache TomcatJavamail - Apache Geronimo JavaMailBean Validation - Apache BVal

你会看到Tomcat(Web容器/服务器)只是应用服务器武器库中的另一个工具。如果你愿意,你也可以在Web服务器中获得JPA和其他技术,但是应用服务器只是为了你的方便而打包所有这些东西。要完全归类为应用服务器,你本质上需要遵守一些标准规定的工具列表。

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应用程序是在应用程序服务器上运行的计算机代码,使用应用程序服务器支持的语言编写,并将运行时库和组件称为应用服务器提供

Web服务器和应用服务器之间的主要区别在于,Web服务器旨在提供静态页面(例如超文本标记语言和CSS),而应用服务器负责通过执行服务器端代码(例如JSP、Servlet或EJB)生成动态内容。

我应该用哪一个?
一旦您了解了Web和应用程序服务器以及Web容器之间的区别,就很容易弄清楚何时使用它们。如果您提供静态网页,则需要像Apache HTTPD这样的web server。如果您有一个仅使用JSP和Servlet来生成动态内容的Java应用程序,那么您需要像Tomcat或Jetty这样的web containers。而如果您JavaEE应用程序使用EJB、分布式事务、消息传递和其他花哨的功能比您需要一个成熟的application server像JBoss,WebSphere或Oracle的WebLogic。

Web容器是Web服务器的一部分,Web服务器是应用服务器的一部分。

应用服务器

Web Server由Web容器组成,而Application Server由Web容器和EJB容器组成。

国际海事组织,这主要是关于分离问题。

从纯技术的角度来看,您可以在单个Web服务器中执行所有操作(Web内容+业务逻辑)。如果您这样做,那么信息将嵌入在请求的超文本标记语言内容中。会有什么影响?

例如,假设你有两个不同的应用程序,它们在浏览器上呈现完全不同的超文本标记语言内容。如果你将业务逻辑分离到一个应用服务器中,那么你就可以提供不同的网络服务器通过脚本在应用服务器中查找相同的数据。但是,如果你不将逻辑分离并将其保留在网络服务器中,每当你改变业务模型时,你最终会在每个网络服务器中改变它,这将花费更多时间,不太可靠且容易出错。

应用服务器和Web服务器都用于承载Web应用程序。Web Server处理Web容器,另一方面Application Server处理Web容器以及Microsoft. Net的EJB(Enterprise JavaBean)容器或COM+容器。

Web Server旨在为HTTP静态内容(如超文本标记语言、图像等)提供服务,而动态内容则具有支持Perl、PHP、ASP、JSP等脚本语言的插件,并且仅限于HTTP协议。下面的服务器可以生成动态HTTP内容。

Web服务器的编程环境:

IIS:ASP(. NET)

Apache Tomcat:Servlet

Jetty:Servlet

Apache:PHP、CGI

Application Server可以做任何Web Server能够做的事情,并使用任何协议进行侦听,并且App Server具有支持应用程序级服务的组件和功能,例如连接池、对象池、事务支持、消息服务等。

Application Server的编程环境:

MTS: COM+

中文全称:EJB

JBoss: EJB

WebLogic应用服务器:EJB

基本理解:

在客户端服务器架构

服务器:>为请求提供服务。

客户端:>消费服务。

Web服务器和应用程序服务器都是软件应用程序,它们充当客户端的服务器。

他们根据他们的使用地点获得他们的名字。

Web server :> serve web content:> Like Html components:> Like Javascript components:> Other web components like images,resource files:> Supports mainly web protocols like http,https.:> Supports web Request & Response formats.

用法--

      we require low processing rates,
regular processing practices involves.

例如:所有平面服务器通常都可以现成,仅提供Web服务的内容。

Application server :> Serve application content/component data(Business data).:> These are special kind which are custom writtendesigned/engineered for specificpurpose.some times fully unique intheir way and stands out of the crowd.
:> As these serves different types of data/response contents:> So we can utilize these services for mobile client,webclients,intranet clients.:> Usually application servers are services offered on differentprotocols.:> Supports different Request& Response formats.

用法--

      we require multi point processing,
specialized processing techniques involves like for AI.

例如:谷歌地图服务器、谷歌搜索服务器、谷歌文档服务器、微软365服务器,用于AI的Microsoft计算机视觉服务器。

我们可以假设它们是4-层/n-层架构中的层/层次。

 So they can provideload balancing,multiple security levels,multiple active points,even they can provide different request processing environments.

请点击此链接获取标准架构类比:

https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ee658120(v%3DP.10)

  • 网络服务器:对于每个URL,它都返回一个文件。这就是它所做的一切。文件是静态内容,这意味着它存储在服务器的某个地方,在你提出要求之前。最流行的网络服务器是apache超文本传输协议nginx
  • 应用程序服务器:对于每个URL,它运行一些代码,用某种语言编写生成一个响应,并返回它。响应事先不存在,它是为您的特定请求生成的,也就是说,它是动态内容。每种语言的应用程序服务器都不同。一些流行的例子是Java的tomcat/jetty,Python的uwsgi/Gunicorn代码

几乎您访问的每个页面都使用两者。静态内容(例如,图像、视频)由Web服务器提供,其余部分(您和其他用户之间不同的部分)由应用程序服务器生成。

从上面那些很棒的SO布道者的帖子中得出我的结论,我的结论是,两者都是驻留在实际金属服务器(物理服务器)上的软件。它们都携手合作,为最终用户提供服务。然后,根据设置,我们可以选择称之为什么,这意味着如何描述它取决于使用中的实际设置。如果它们都驻留在同一个裸机(物理服务器)上,我们称之为网络服务器和应用程序服务器……简单!如果在不同的机器上,显然,我们有两个不同的裸机(物理服务器)。然后我们可以根据这些服务器的功能标记它们:一个网络服务器和另一个应用程序服务器。

Web Server vs App Server

IBM把两者做了很好的比较

根据严格的定义,Web服务器是应用程序服务器的公共子集。

Web服务器提供静态Web内容-例如,超文本标记语言页面,文件,图像,视频-主要响应来自Web浏览器的超文本传输协议(HTTP)请求。

应用程序服务器通常也可以交付Web内容,但其主要工作是启用最终用户客户端和服务器端应用程序代码(通常表示业务逻辑的代码)之间的交互,以生成和交付动态内容,例如事务结果、决策支持或实时分析。应用程序服务器的客户端可以是应用程序自己的最终用户UI、Web浏览器或移动应用程序,客户端-服务器交互可以通过任意数量的通信协议发生。

然而,在实践中,Web服务器和应用程序服务器之间的界限变得更加模糊,特别是随着Web浏览器成为首选的应用程序客户端,以及用户对Web应用程序和Web应用程序性能的期望越来越高。

大多数Web服务器都支持脚本语言插件(例如ASP、JSP、PHP、Perl),这些插件使Web服务器能够基于服务器端逻辑生成动态内容。越来越多的应用服务器不仅集成了Web服务器功能,还使用HTTP作为主要协议,并支持其他协议(例如CGI和CGI变体)来与Web服务器接口。它们还允许Web应用程序利用反向代理、集群、冗余和负载平衡等服务来提高性能和可靠性,并允许开发人员减少对基础设施的关注,更多地关注编码。

为了使事情更加混乱,许多Web服务器和一些应用程序服务器被称为或自称为web应用服务器

最重要的是,当今最流行的Web服务器和应用程序服务器是两者的混合体。您今天使用的大多数日益丰富的应用程序都具有静态Web内容和动态应用程序内容的组合,通过Web服务器和应用程序服务器技术的组合交付。