应用服务器和web服务器之间的区别是什么?
当前回答
最大的区别是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑。
其他回答
实际上,Apache是一个web服务器,Tomcat是一个应用程序服务器。当HTTP请求到达web服务器时。然后,web服务器将静态内容发送回浏览器。是否有逻辑要做,然后将该请求发送到应用程序服务器。处理完逻辑后,将响应发送到web服务器并发送到客户端。
从上面那些很棒的SO福音传道者的帖子中得出我的结论,我得出结论,两者都是驻留在实际金属服务器(物理服务器)上的软件。两者携手合作,为最终用户提供服务。然后,根据设置,我们可以选择调用它,这意味着如何描述它取决于实际使用的设置。如果它们都位于同一个裸机(物理服务器)上,我们称之为web和应用服务器。。。易于理解的如果在不同的机器上,显然,我们手中有两个不同的裸机(物理服务器)。然后,我们可以根据这些服务器的功能来标记它们:一个web服务器和另一个应用程序服务器。
应用程序服务器的设计和部署通常是为了促进运行时间更长的进程,而这些进程也将更加耗费资源。
web服务器通常用于资源不密集的短突发。这主要是为了方便提供基于web的流量。
Web服务器专门处理HTTP/HTTPS请求。它使用HTTP/HTTPS协议向web提供内容。
应用服务器通过任意数量的协议(可能包括HTTP)为应用程序提供业务逻辑。应用程序可以像调用对象上的方法一样使用此逻辑。在大多数情况下,服务器通过一个组件API公开这个业务逻辑,例如在Java EE(Java平台,企业版)应用服务器上找到的EJB(Enterprise JavaBean)组件模型。重点是web服务器通过http协议公开所有内容,而应用程序服务器不限于此。因此,应用服务器提供比web服务器多得多的服务,web服务器通常包括:
A(专有或非专有)API负载平衡、故障转移。。。对象生命周期管理状态管理(会话)资源管理(例如,到数据库的连接池)
大多数应用程序服务器都将Web服务器作为其组成部分,这意味着App Server可以执行Web服务器所能执行的任何操作。此外,AppServer还具有支持应用程序级服务的组件和功能,如连接池、对象池、事务支持、消息服务等。
应用服务器可以(但不总是)在web服务器上运行以执行程序逻辑,然后可以由web服务器交付程序逻辑的结果。这是web服务器/应用程序服务器场景的一个示例。Microsoft世界中的一个很好的例子是Internet Information Server/SharePoint Server关系。IIS是一个web服务器;SharePoint是一个应用程序服务器。SharePoint位于IIS之上,执行特定的逻辑,并通过IIS提供结果。例如,在Java世界中,Apache和Tomcat也有类似的场景。
由于web服务器非常适合静态内容,而应用服务器非常适合动态内容,因此大多数生产环境都将web服务器作为应用服务器的反向代理。这意味着在服务页面请求时,静态内容(如图像/静态html)由解释请求的web服务器提供。使用某种过滤技术(主要是请求资源的扩展),web服务器识别动态内容请求并透明地转发到应用服务器。
此类配置的示例是Apache HTTP Server和BEA WebLogic Server。Apache HTTP服务器是Web服务器,BEA WebLogic是应用程序服务器。在某些情况下,服务器是紧密集成的,如IIS和.NET运行时。IIS是web服务器。当配备.NET运行时环境时,IIS能够提供应用程序服务
Web Server Programming Environment
Apache PHP, CGI
IIS (Internet Information Server) ASP (.NET)
Tomcat Servlet
Jetty Servlet
Application Server Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's) EJB
JBoss AS EJB
MTS COM+
这是一个详细的答案,其中包含一些场景,以清楚地了解差异和相似性,以及两者如何协同工作。
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,以实时处理其提取的所有数据。