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


当前回答

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

其他回答

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

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

Web服务器是在一台机器上运行的进程,该机器使用“互联网”协议之一(http、https、ftp等)专门“侦听”TCP/IP信道,并根据这些传入的请求执行任何操作。。。通常,(按照最初的定义),它获取/生成并向客户端返回一个html网页,或者从服务器上的静态html文件获取,或者根据传入客户端请求中的参数动态构建。

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

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

应用程序服务器向客户端公开业务逻辑。这意味着应用程序服务器由一组执行业务逻辑的方法组成(但不限于此,甚至可以是一台网络计算机,允许许多人在其上运行软件)。因此,它只会输出所需的结果,而不是HTML内容。(类似于方法调用)。因此,它不是严格基于HTTP的。

但web服务器将HTML内容传递给web浏览器(严格基于HTTP)。Web服务器只能处理静态Web资源,但服务器端脚本的出现也允许Web服务器处理动态内容。web服务器接收请求并将其引导到相关脚本(PHP、JSP、CGI脚本等),以创建要发送到客户端的HTML内容。一旦接收到内容,web服务器将向客户端发送HTML页面。

然而,现在这两个服务器都一起使用。web服务器接收请求,然后调用脚本来创建HTML内容。然后,脚本将再次调用应用程序服务器LOGIC(例如检索事务细节)来填充HTML内容。

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

因此我们可以放心地说,现在,在大多数情况下,web服务器被用作应用服务器的子集。但戏剧性地,情况并非如此。

我读过很多关于这个主题的文章,发现这篇文章非常有用。