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


当前回答

以上所有这些都是非常简单的事情。应用服务器包含一个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和其他技术,但应用服务器只是为了你的方便而打包所有这些东西。要完全归类为应用服务器,您基本上需要遵守某个标准列出的工具列表。

其他回答

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协议提供web内容(HTML和静态内容)。另一方面,应用程序服务器是一个容器,您可以在该容器上构建业务逻辑和流程,并通过各种协议(包括n层架构中的HTTP)将其公开给客户端应用程序。

因此,应用服务器提供比web服务器多得多的服务,web服务器通常包括:

A(专有或非专有)API对象生命周期管理,状态管理(会话),资源管理(例如,到数据库的连接池),负载平衡、故障转移。。。

AFAIK,ATG Dynamo是90年代后期最早的应用服务器之一(根据上面的定义)。在2000年初,它是一些专有应用服务器的统治,如ColdFusion(CFML AS)、BroadVision(服务器端JavaScript AS)等。

大多数情况下,这些术语Web服务器和应用服务器可以互换使用。

以下是Web Server和Application Server功能的一些关键区别:

Web服务器旨在为HTTP内容提供服务。App Server还可以提供HTTP内容,但不限于HTTP。它可以提供其他协议支持,如RMI/RPCWeb服务器主要设计用于提供静态内容,尽管大多数Web服务器都有插件来支持Perl、PHP、ASP、JSP等脚本语言,这些服务器可以通过这些语言生成动态HTTP内容。大多数应用程序服务器都将Web服务器作为其组成部分,这意味着App Server可以执行Web服务器所能执行的任何操作。此外,AppServer还具有支持应用程序级服务的组件和功能,如连接池、对象池、事务支持、消息服务等。由于web服务器非常适合静态内容,而应用服务器非常适合动态内容,因此大多数生产环境都将web服务器作为应用服务器的反向代理。这意味着在处理页面请求时,静态内容(如图像/静态HTML)由解释请求的web服务器提供。使用某种过滤技术(主要是请求资源的扩展),web服务器识别动态内容请求并透明地转发到应用服务器

此类配置的示例是Apache Tomcat HTTP Server和Oracle(以前称为BEA)WebLogic Server。Apache Tomcat HTTP服务器是Web服务器,Oracle WebLogic是应用程序服务器。

在某些情况下,服务器是紧密集成的,如IIS和.NET运行时。IIS是web服务器。当配备.NET运行时环境时,IIS能够提供应用程序服务。

不一定有明确的分界线。如今,许多程序结合了服务http请求(web服务器)和处理业务逻辑(app服务器)的元素

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

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