应用服务器和web服务器之间的区别是什么?
当前回答
web服务器运行HTTP协议来服务网页。应用服务器可以(但不总是)在web服务器上运行以执行程序逻辑,然后可以由web服务器交付程序逻辑的结果。这是web服务器/应用程序服务器场景的一个示例。
Microsoft世界中的一个很好的例子是Internet Information Server/SharePoint Server关系。IIS是一个web服务器;SharePoint是一个应用程序服务器。SharePoint位于IIS之上,执行特定的逻辑,并通过IIS提供结果。
例如,在Java世界中,Apache和Tomcat也有类似的场景。
其他回答
国际海事组织,这主要是关于分离担忧。
从纯技术角度来看,您可以在单个web服务器中完成所有操作(web内容+业务逻辑)。如果您这样做,那么信息将嵌入请求的HTML内容中。会有什么影响?
例如,假设您有两个不同的应用程序,它们在浏览器上呈现完全不同的HTML内容。如果您将业务逻辑分离为应用服务器,那么您可以提供不同的web服务器,通过脚本在应用服务器中查找相同的数据。然而,如果您不将逻辑分离并将其保存在web服务器中,那么每当您更改业务模型时,您最终都会在您拥有的每一个web服务器中更改它,这将花费更多时间、可靠性降低且容易出错。
从上面那些很棒的SO福音传道者的帖子中得出我的结论,我得出结论,两者都是驻留在实际金属服务器(物理服务器)上的软件。两者携手合作,为最终用户提供服务。然后,根据设置,我们可以选择调用它,这意味着如何描述它取决于实际使用的设置。如果它们都位于同一个裸机(物理服务器)上,我们称之为web和应用服务器。。。易于理解的如果在不同的机器上,显然,我们手中有两个不同的裸机(物理服务器)。然后,我们可以根据这些服务器的功能来标记它们:一个web服务器和另一个应用程序服务器。
web服务器:对于每个URL,它都返回一个文件。这就是它的全部功能。该文件是静态内容,也就是说,在您提出请求之前,它存储在服务器的某个位置。最流行的web服务器是apachehttp和nginx。应用程序服务器:对于每个URL,它都会运行一些用某种语言编写的代码,生成一个响应并返回它。响应事先不存在,它是为您的特定请求生成的,也就是说,它是动态内容。每种语言的应用程序服务器都不同。一些流行的例子是java的tomcat/jetty,python的uwsgi/gunicorn。
几乎您访问的每个页面都同时使用这两种功能。静态内容(例如,图像、视频)由web服务器提供,其余部分(您和其他用户之间不同的部分)由应用服务器生成。
正如许多人之前所说的,web服务器处理HTTP请求,而应用程序服务器处理分布式组件的请求。因此,了解差异的最简单方法是比较两种产品提供的编程环境。
Web服务器->编程环境
IIS:ASP(.NET)
Tomcat:Servlet
码头:Servlet
阿帕奇:Php,CGI
应用程序服务器->编程环境
MTS:COM公司+
是:EJB
JBoss:EJB
WebLogic应用服务器:EJB
关键区别在于,应用程序服务器支持一些分布式组件技术,提供远程调用和分布式事务等功能,如Java世界中的EJB或Microsoft平台上的COM+。Http服务器通常支持一些更简单的编程环境,通常是脚本环境,例如Microsoft的ASP(.NET)或基于Servlet的,包括JSP和Java的许多其他编程环境,或者Apache的PHP和CGI。
其他功能,如负载平衡、集群、会话故障切换、连接池等,过去属于应用服务器领域,现在也可以直接或通过一些第三方产品在web服务器上使用。
最后,值得注意的是,像Spring Framework这样的“轻量级容器”进一步扭曲了这一图景,这些容器通常以更简单的方式补充了应用服务器的用途,而没有应用服务器基础设施。而且,由于应用程序中的分布式方面正从分布式组件转向服务范式和SOA架构,留给传统应用程序服务器的空间越来越少。
实际上,Apache是一个web服务器,Tomcat是一个应用程序服务器。当HTTP请求到达web服务器时。然后,web服务器将静态内容发送回浏览器。是否有逻辑要做,然后将该请求发送到应用程序服务器。处理完逻辑后,将响应发送到web服务器并发送到客户端。