应用服务器和web服务器之间的区别是什么?
当前回答
这两个术语都非常通用,一个包含另一个,在某些情况下反之亦然。
Web服务器:使用http协议向Web提供内容。应用程序服务器:托管并公开业务逻辑和流程。
我认为主要的一点是web服务器通过http协议公开所有内容,而应用程序服务器不限于此。
也就是说,在许多情况下,您会发现web服务器被用于创建应用程序服务器的前端,即它公开了一组网页,允许用户与应用程序服务器中的业务规则进行交互。
其他回答
应用程序服务器的设计和部署通常是为了促进运行时间更长的进程,而这些进程也将更加耗费资源。
web服务器通常用于资源不密集的短突发。这主要是为了方便提供基于web的流量。
web服务器运行HTTP协议来服务网页。应用服务器可以(但不总是)在web服务器上运行以执行程序逻辑,然后可以由web服务器交付程序逻辑的结果。这是web服务器/应用程序服务器场景的一个示例。
Microsoft世界中的一个很好的例子是Internet Information Server/SharePoint Server关系。IIS是一个web服务器;SharePoint是一个应用程序服务器。SharePoint位于IIS之上,执行特定的逻辑,并通过IIS提供结果。
例如,在Java世界中,Apache和Tomcat也有类似的场景。
正如Rutesh和jmservera所指出的,区别是模糊的。从历史上看,它们是不同的,但在90年代,这两个以前不同的类别混合了特征并有效地合并了。在这一点上,最好的设想是“应用服务器”产品类别是“web服务器”类别的严格超集。
一些历史。在Mosaic浏览器和超链接内容的早期,出现了一种称为“web服务器”的东西,它通过HTTP提供网页内容和图像。大部分内容都是静态的,HTTP1.0协议只是一种传送文件的方式。很快,“web服务器”类别演变为包括CGI功能——有效地对每个web请求启动一个过程以生成动态内容。HTTP也成熟了,产品变得更加复杂,具有缓存、安全性和管理功能。随着技术的成熟,我们从Kiva和NetDynamics获得了特定于公司的基于Java的服务器端技术,这些技术最终都合并到了JSP中。我认为微软在1996年将ASP添加到了Windows NT 4.0中。静态web服务器已经学会了一些新技巧,因此对于许多场景来说,它是一个有效的“应用服务器”。
在一个平行的类别中,应用服务器已经进化并存在了很长时间。公司为Unix提供了Tuxedo、TopEnd、Encina等产品,这些产品从哲学上源自IMS和CICS等大型机应用程序管理和监控环境。微软的产品是微软事务服务器(MTS),后来演变成COM+。这些产品中的大多数指定了“封闭”的特定于产品的通信协议,以将“胖”客户端与服务器互连。(对于Encina,通信协议是DCE RPC;对于MTS,它是DCOM;等等)1995/96年,这些传统的应用服务器产品开始嵌入基本的HTTP通信功能,最初是通过网关。线条开始模糊。
Web服务器在处理更高的负载、更多的并发性和更好的功能方面变得越来越成熟。应用服务器提供了越来越多的基于HTTP的通信功能。
此时,“应用服务器”和“web服务器”之间的界限是模糊的。但作为一个重点,人们继续使用不同的术语。当有人说“web服务器”时,你通常会想到以HTTP为中心、面向web UI的应用程序。当有人说“应用服务器”时,你可能会想到“更重的负载、企业功能、事务和排队、多渠道通信(HTTP+更多)。但通常是同一个产品同时满足两组工作负载要求。”。
IBM的“应用服务器”WebSphere有自己的捆绑web服务器。另一个传统的应用服务器WebLogic也是如此。Windows是微软的应用服务器(除了作为其文件和打印服务器、媒体服务器等),捆绑了IIS。
虽然两者之间可能存在重叠(某些web服务器甚至可以用作应用服务器),但IMHO最大的区别在于处理模型和会话管理:
在Web服务器处理模型中,重点是处理请求;“会话”的概念几乎是虚拟的。也就是说,通过在客户端和服务器之间传输状态表示(因此是REST)和/或将其串行化到外部持久存储(SQL server、Memcached等)来模拟“会话”。
在应用程序服务器中,会话通常更加明确,并且通常在整个“会话”期间以对象的形式存在于应用程序服务器的内存中。
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服务器和应用程序服务器技术的组合提供。