应用服务器和web服务器之间的区别是什么?
当前回答
不一定有明确的分界线。如今,许多程序结合了服务http请求(web服务器)和处理业务逻辑(app服务器)的元素
其他回答
简言之web服务器是通过HTTP请求向用户提供静态网页的服务器。应用服务器是承载系统的业务逻辑的服务器。它通常同时托管长时间运行的/批处理进程和/或互操作服务,这些服务不适合人类使用(REST/JSON服务、SOAP、RPC等)。
从…起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应用程序是在应用程序服务器上运行的计算机代码,用应用程序服务器支持的语言编写,并调用应用程序服务器提供的运行库和组件。
在Java术语中,还有一个:web容器(或者更严格地说,servlet容器)。例如,它位于web服务器和应用程序服务器之间。
Java术语中的web容器是一个应用服务器,它基本上只实现JavaEE的JSP/Servlet部分,并且缺少JavaEE的几个核心部分,例如EJB支持。Apache Tomcat就是一个例子。
这是一个详细的答案,其中包含一些场景,以清楚地了解差异和相似性,以及两者如何协同工作。
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,以实时处理其提取的所有数据。
以上所有这些都是非常简单的事情。应用服务器包含一个web服务器,与标准web服务器相比,应用服务器只需要对其进行更多的添加/扩展。如果您以TomEE为例:
CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal
您将看到Tomcat(Web容器/服务器)只是应用服务器库中的另一个工具。如果你愿意,你也可以在web服务器上获得JPA和其他技术,但应用服务器只是为了你的方便而打包所有这些东西。要完全归类为应用服务器,您基本上需要遵守某个标准列出的工具列表。