应用服务器和Web服务器有什么区别?

8

我能为您解答应用服务器和Web服务器之间的区别吗?请列举每种类型的示例。


可能是应用服务器和Web服务器有什么区别?的重复问题。 - thepurpleowl
4个回答

7
"Web服务器"通常是使用http(或https)协议提供内容的任何服务器程序。这些服务器通常侦听特定端口(80或443)。这些服务器的客户端通常是像Chrome、Firefox或Internet Explorer这样的网络浏览器。
Web服务器的示例:Apache,Microsoft IIS
"应用服务器"是一个更模糊、定义不清的术语。它可以指任何为给定应用程序提供响应的程序。
在Web服务的上下文中,"应用服务器"往往指用于生成动态内容的更高级别框架。这可以是某种容器,在其中您可以部署特定的"Web应用程序"。例如Apache Tomcat、WebSphere、JBoss等。
在两种情况下,该术语还可以指托管软件执行这些操作的机器硬件。

IIS 也是一个应用程序服务器,用于 ASP.NET。 - Jack Leow

2

Web服务器是一个用于简单操作的容器,例如Servlet/JSP容器。

应用服务器是类似于Web服务器的容器,但比Web服务器添加了更多的操作,如事务管理器、数据源、集群、负载平衡、消息传递和其他复杂的业务操作。

像Apache Tomcat这样的是Web服务器。

像JBoss、Glassfish、WebSphere、Oracle应用服务器这样的是应用服务器。


我不同意。Web服务器只是应用服务器的一种特定形式。 - skaffman
我认为Web服务器是应用服务器的特殊版本。Web服务器是轻量级容器,而应用服务器是重量级容器,因为它包含许多服务和容器,如JSP / Servlet和EJB容器以及其他服务。 - bassem
@bassem:那真的没有太多意义。首先,一个Web服务器不是“轻量级容器”。一些Web服务器比其他更轻便。例如,lighttpd是一个最小化的、小占用空间的、快速的Web服务器。Apache不能被称为轻量级。第二,“应用服务器”的术语非常通用。它的含义取决于你问的人不同。 - user242275
应该是像Apache这样的Web服务器。 - Mahi

0
一个Web服务器有时可以充当应用程序服务器(例如,当它托管Web服务时)。但是,应用程序服务器不一定要实现为Web服务器。它可以只侦听TCP套接字并相应地处理。

-2

Web服务器

Web服务器处理HTTP协议。当Web服务器接收到HTTP请求时,它会回应一个HTTP响应,例如发送回一个HTML页面。为了处理请求,Web服务器可能会回应一个静态的HTML页面或图像,发送一个重定向,或者将动态响应生成委派给其他程序,如CGI脚本、JSP(JavaServer Pages)、Servlet、ASP(Active Server Pages)、服务器端JavaScript或其他服务器端技术。无论其目的是什么,这些服务器端程序都会生成一个响应,通常是HTML,供在Web浏览器中查看。

要理解Web服务器的委派模型相当简单。当请求进入Web服务器时,Web服务器只是把请求传递给最适合处理它的程序。Web服务器除了提供一个执行服务器端程序并传回生成的响应的环境外,不提供任何功能。服务器端程序通常为自己提供事务处理、数据库连接和消息传递等功能。

虽然Web服务器本身可能不支持事务或数据库连接池,但它可以采用各种容错和可扩展性策略,例如负载均衡、缓存和集群,这些功能往往被错误地归属为仅适用于应用服务器的功能。

应用服务器

关于应用服务器,根据我们的定义,应用服务器通过各种协议(可能包括HTTP)向客户端应用程序公开业务逻辑。而Web服务器主要处理将HTML发送到Web浏览器进行显示,应用服务器提供对客户端应用程序使用的业务逻辑的访问。应用程序可以像调用对象上的方法(或者在过程化世界中调用函数)一样使用此逻辑。

这样的应用服务器客户端可以包括运行在个人电脑上的GUI(图形用户界面),Web服务器,甚至其他应用服务器。在应用服务器和其客户端之间传输的信息不仅限于简单的显示标记。相反,这些信息是程序逻辑。由于逻辑以数据和方法调用的形式存在,而不是静态的HTML,客户端可以根据自己的需要使用公开的业务逻辑。

在大多数情况下,服务器通过组件API(例如J2EE(Java 2平台,企业版)应用服务器上找到的EJB(企业JavaBean)组件模型)公开此业务逻辑。此外,应用服务器管理自己的资源。这些门控职责包括安全性、事务处理、资源池化和消息传递。与Web服务器类似,应用服务器还可以使用各种可扩展性和容错技术。


2
你是把这个回复从 http://www.javaworld.com/article/2077354/learn-java/app-server-web-server-what-s-the-difference.html 逐字复制过来的,而没有给任何来源的引用吗? - Kon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接