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


当前回答

基本理解:

在客户端-服务器体系结构中

服务器:>服务请求的服务器。客户端:>使用服务。

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.

用法--我们需要低处理速率,常规处理实践涉及。例如:所有平面服务器通常都是现成的,只提供网络服务基于内容。

Application server :> Serve application content/component data(Business data).
                   :> These are special kind which are custom written 
                      designed/engineered for specific
                      purpose.some times fully unique in 
                      their 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,web 
                      clients,intranet clients. 
                   :> Usually application servers are services offered on different 
                      protocols.    
                   :> Supports different Request& Response formats.

用法--我们需要多点处理,专门的处理技术涉及人工智能。例如:谷歌地图服务器、谷歌搜索服务器、谷歌文档服务器、微软365用于AI的微软计算机视觉服务器。

我们可以将它们假设为4层/n层体系结构中的层/层次结构。

 So they can provide 
                    load 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(体积百分比3dpandp.10)

其他回答

虽然两者之间可能存在重叠(某些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服务器和应用程序服务器技术的组合提供。

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

Web服务器->编程环境

IIS:ASP(.NET)

Tomcat:Servlet

码头:Servlet

阿帕奇:Php,CGI

应用程序服务器->编程环境

MTS:COM公司+

是:EJB

JBoss:EJB

WebLogic应用服务器:EJB

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

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

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

web服务器:对于每个URL,它都返回一个文件。这就是它的全部功能。该文件是静态内容,也就是说,在您提出请求之前,它存储在服务器的某个位置。最流行的web服务器是apachehttp和nginx。应用程序服务器:对于每个URL,它都会运行一些用某种语言编写的代码,生成一个响应并返回它。响应事先不存在,它是为您的特定请求生成的,也就是说,它是动态内容。每种语言的应用程序服务器都不同。一些流行的例子是java的tomcat/jetty,python的uwsgi/gunicorn。

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

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

从纯技术角度来看,您可以在单个web服务器中完成所有操作(web内容+业务逻辑)。如果您这样做,那么信息将嵌入请求的HTML内容中。会有什么影响?

例如,假设您有两个不同的应用程序,它们在浏览器上呈现完全不同的HTML内容。如果您将业务逻辑分离为应用服务器,那么您可以提供不同的web服务器,通过脚本在应用服务器中查找相同的数据。然而,如果您不将逻辑分离并将其保存在web服务器中,那么每当您更改业务模型时,您最终都会在您拥有的每一个web服务器中更改它,这将花费更多时间、可靠性降低且容易出错。