应用服务器和web服务器之间的区别是什么?
当前回答
Web服务器和应用程序服务器之间的主要区别在于,Web服务器旨在为静态页面(如HTML和CSS)提供服务,而应用程序服务器负责通过执行服务器端代码(如JSP、Servlet或EJB)生成动态内容。
我应该使用哪一个?一旦您了解了web和应用程序服务器以及web容器之间的区别,就很容易确定何时使用它们。如果要提供静态网页,则需要像ApacheHTTPD这样的web服务器。如果您的Java应用程序只有JSP和Servlet来生成动态内容,那么您需要像Tomcat或Jetty这样的web容器。然而,如果您有使用EJB、分布式事务、消息传递和其他奇特功能的JavaEE应用程序,那么您需要一个成熟的应用程序服务器,如JBoss、WebSphere或Oracle的WebLogic。
Web容器是Web服务器的一部分,Web服务器是Application Server的一部分。
Web服务器由Web容器组成,而Application Server由Web容器和EJB容器组成。
其他回答
简言之web服务器是通过HTTP请求向用户提供静态网页的服务器。应用服务器是承载系统的业务逻辑的服务器。它通常同时托管长时间运行的/批处理进程和/或互操作服务,这些服务不适合人类使用(REST/JSON服务、SOAP、RPC等)。
这两者之间的边界越来越薄。
应用程序服务器向客户端公开业务逻辑。这意味着应用程序服务器由一组执行业务逻辑的方法组成(但不限于此,甚至可以是一台网络计算机,允许许多人在其上运行软件)。因此,它只会输出所需的结果,而不是HTML内容。(类似于方法调用)。因此,它不是严格基于HTTP的。
但web服务器将HTML内容传递给web浏览器(严格基于HTTP)。Web服务器只能处理静态Web资源,但服务器端脚本的出现也允许Web服务器处理动态内容。web服务器接收请求并将其引导到相关脚本(PHP、JSP、CGI脚本等),以创建要发送到客户端的HTML内容。一旦接收到内容,web服务器将向客户端发送HTML页面。
然而,现在这两个服务器都一起使用。web服务器接收请求,然后调用脚本来创建HTML内容。然后,脚本将再次调用应用程序服务器LOGIC(例如检索事务细节)来填充HTML内容。
因此这两个服务器都得到了有效的使用。
因此我们可以放心地说,现在,在大多数情况下,web服务器被用作应用服务器的子集。但戏剧性地,情况并非如此。
我读过很多关于这个主题的文章,发现这篇文章非常有用。
从…起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服务器:使用http协议向Web提供内容。应用程序服务器:托管并公开业务逻辑和流程。
我认为主要的一点是web服务器通过http协议公开所有内容,而应用程序服务器不限于此。
也就是说,在许多情况下,您会发现web服务器被用于创建应用程序服务器的前端,即它公开了一组网页,允许用户与应用程序服务器中的业务规则进行交互。
这是一个详细的答案,其中包含一些场景,以清楚地了解差异和相似性,以及两者如何协同工作。
Application Server是一个有时与web服务器混合使用的术语。虽然web服务器主要处理HTTP协议,但应用程序服务器处理几种不同的协议,包括但不限于HTTP。
Web服务器的主要工作是显示站点内容,应用程序服务器负责逻辑、用户和显示内容之间的交互。应用服务器与web服务器协同工作,其中一个显示,另一个交互。
服务器和客户端之间来回传递的信息不限于简单的显示标记,而是两者之间的交互。
在大多数情况下,服务器通过组件API创建这种交互,例如J2EE(Java 2平台)、EJB(Enterprise JavaBean)和其他不同的应用程序软件模型。
例如:
了解应用程序服务器与web服务器协同工作的场景与没有应用程序服务器的场景之间差异的最佳方式是通过在线商店。
场景1:没有应用程序服务器的Web服务器
您有一个只有web服务器而没有应用程序服务器的在线商店。该网站将提供一个显示,您可以从中选择产品。当您提交查询时,站点执行查找并将HTML结果返回给其客户端。web服务器将您的查询直接发送到数据库服务器(请耐心等待,我将在下一篇文章中解释这一点)并等待响应。一旦收到响应,web服务器就会将响应格式化为HTML文件,并将其发送到web浏览器。每次运行查询时,服务器和数据库服务器之间的来回通信都会发生。
场景2:带有应用程序服务器的Web服务器
如果您要运行的查询之前已经完成,并且此后没有数据更改,那么服务器将生成结果,而无需将请求发送到数据库服务器。这允许实时查询,其中第二个客户端可以访问相同的信息并接收实时可靠的信息,而无需向数据库服务器发送另一个重复查询。服务器基本上充当数据库服务器和web服务器之间的中间层。这允许提取的信息可重复使用,而在第一个场景中,由于该信息嵌入到特定的“自定义”HTML页面中,因此这不是一个可重复使用的过程。第二个客户端将不得不再次请求信息,并接收另一个包含所请求信息的HTML嵌入页面——效率很低。更不用说,这种类型的服务器非常灵活,因为它能够管理自己的资源,包括安全性、事务处理、消息传递和资源池。
为了支持如此多种复杂的任务,该服务器必须具有内置的冗余、强大的处理能力和大量的RAM,以实时处理其提取的所有数据。