应用服务器和web服务器之间的区别是什么?
当前回答
web服务器:对于每个URL,它都返回一个文件。这就是它的全部功能。该文件是静态内容,也就是说,在您提出请求之前,它存储在服务器的某个位置。最流行的web服务器是apachehttp和nginx。应用程序服务器:对于每个URL,它都会运行一些用某种语言编写的代码,生成一个响应并返回它。响应事先不存在,它是为您的特定请求生成的,也就是说,它是动态内容。每种语言的应用程序服务器都不同。一些流行的例子是java的tomcat/jetty,python的uwsgi/gunicorn。
几乎您访问的每个页面都同时使用这两种功能。静态内容(例如,图像、视频)由web服务器提供,其余部分(您和其他用户之间不同的部分)由应用服务器生成。
其他回答
从上面那些很棒的SO福音传道者的帖子中得出我的结论,我得出结论,两者都是驻留在实际金属服务器(物理服务器)上的软件。两者携手合作,为最终用户提供服务。然后,根据设置,我们可以选择调用它,这意味着如何描述它取决于实际使用的设置。如果它们都位于同一个裸机(物理服务器)上,我们称之为web和应用服务器。。。易于理解的如果在不同的机器上,显然,我们手中有两个不同的裸机(物理服务器)。然后,我们可以根据这些服务器的功能来标记它们:一个web服务器和另一个应用程序服务器。
首先,web服务器通过HTTP协议提供web内容(HTML和静态内容)。另一方面,应用程序服务器是一个容器,您可以在该容器上构建业务逻辑和流程,并通过各种协议(包括n层架构中的HTTP)将其公开给客户端应用程序。
因此,应用服务器提供比web服务器多得多的服务,web服务器通常包括:
A(专有或非专有)API对象生命周期管理,状态管理(会话),资源管理(例如,到数据库的连接池),负载平衡、故障转移。。。
AFAIK,ATG Dynamo是90年代后期最早的应用服务器之一(根据上面的定义)。在2000年初,它是一些专有应用服务器的统治,如ColdFusion(CFML AS)、BroadVision(服务器端JavaScript AS)等。
国际海事组织,这主要是关于分离担忧。
从纯技术角度来看,您可以在单个web服务器中完成所有操作(web内容+业务逻辑)。如果您这样做,那么信息将嵌入请求的HTML内容中。会有什么影响?
例如,假设您有两个不同的应用程序,它们在浏览器上呈现完全不同的HTML内容。如果您将业务逻辑分离为应用服务器,那么您可以提供不同的web服务器,通过脚本在应用服务器中查找相同的数据。然而,如果您不将逻辑分离并将其保存在web服务器中,那么每当您更改业务模型时,您最终都会在您拥有的每一个web服务器中更改它,这将花费更多时间、可靠性降低且容易出错。
最大的区别是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑。
正如许多人之前所说的,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架构,留给传统应用程序服务器的空间越来越少。