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


当前回答

Web服务器

运行python-m“SimpleHTTPServer”并转到http://localhost:8080.你所看到的是一个运行中的web服务器。服务器只需通过存储在计算机上的HTTP提供文件。关键点是,所有这些都是在HTTP协议之上完成的。例如,也存在FTP服务器,它们执行完全相同的操作(为存储的文件提供服务),但使用不同的协议。

应用程序服务器

假设我们有一个像下面这样的小应用程序(来自Flask的片段)。

@app.route('/')
def homepage():
    return '<html>My homepage</html>'

@app.route('/about')
def about():
    return '<html>My name is John</html>'

这个小示例程序将URL/映射到函数homepage(),将/about映射到函数about()。

为了运行这段代码,我们需要一个应用服务器(例如Gunicorn)——一个程序或模块,它可以监听来自客户端的请求,并使用我们的代码动态地返回一些东西。在本例中,我们只返回一些非常糟糕的HTML。

其他人谈论的商业逻辑是什么?好吧,由于URL映射到代码库中的某个特定位置,所以我们假设显示了一些关于程序如何工作的逻辑。


重新包装

web服务器-提供存储在某处的文件(最常见的是.css、.html、.js)。常见的web服务器有Apache、Nginx甚至Python的SimpleHTTPServer。

应用服务器-提供动态生成的文件。本质上,大多数web服务器都有某种插件,甚至带有内置功能。还有严格的应用服务器,如Gunicorn(Python)、Unicorn(Ruby)、uWSGI(Python)等。

请注意,您实际上可以使用应用程序服务器的代码构建web服务器。在某些情况下,在开发过程中,您不希望在计算机上运行大量不同的服务器。

其他回答

实际上,Apache是一个web服务器,Tomcat是一个应用程序服务器。当HTTP请求到达web服务器时。然后,web服务器将静态内容发送回浏览器。是否有逻辑要做,然后将该请求发送到应用程序服务器。处理完逻辑后,将响应发送到web服务器并发送到客户端。

应用服务器和web服务器都用于托管web应用程序。另一方面,Web服务器处理Web容器,Application Server处理Web容器以及EJB(Enterprise JavaBean)容器或Microsoft dot Net的COM+容器。

Web服务器被设计为提供HTTP静态内容(如HTML、图像等),对于动态内容,具有支持Perl、PHP、ASP、JSP等脚本语言的插件,并且仅限于HTTP协议。以下服务器可以生成动态HTTP内容。

Web服务器的编程环境:

IIS:ASP(.NET)

Apache Tomcat:Servlet

码头:Servlet

阿帕奇:Php,CGI

应用程序服务器可以执行Web服务器所能执行的任何操作,并使用任何协议进行侦听。应用程序服务器具有支持应用程序级服务的组件和功能,如连接池、对象池、事务支持、消息服务等。

应用程序服务器的编程环境:

MTS:COM公司+

是:EJB

JBoss:EJB

WebLogic应用服务器:EJB

正如Rutesh和jmservera所指出的,区别是模糊的。从历史上看,它们是不同的,但在90年代,这两个以前不同的类别混合了特征并有效地合并了。在这一点上,最好的设想是“应用服务器”产品类别是“web服务器”类别的严格超集。

一些历史。在Mosaic浏览器和超链接内容的早期,出现了一种称为“web服务器”的东西,它通过HTTP提供网页内容和图像。大部分内容都是静态的,HTTP1.0协议只是一种传送文件的方式。很快,“web服务器”类别演变为包括CGI功能——有效地对每个web请求启动一个过程以生成动态内容。HTTP也成熟了,产品变得更加复杂,具有缓存、安全性和管理功能。随着技术的成熟,我们从Kiva和NetDynamics获得了特定于公司的基于Java的服务器端技术,这些技术最终都合并到了JSP中。我认为微软在1996年将ASP添加到了Windows NT 4.0中。静态web服务器已经学会了一些新技巧,因此对于许多场景来说,它是一个有效的“应用服务器”。

在一个平行的类别中,应用服务器已经进化并存在了很长时间。公司为Unix提供了Tuxedo、TopEnd、Encina等产品,这些产品从哲学上源自IMS和CICS等大型机应用程序管理和监控环境。微软的产品是微软事务服务器(MTS),后来演变成COM+。这些产品中的大多数指定了“封闭”的特定于产品的通信协议,以将“胖”客户端与服务器互连。(对于Encina,通信协议是DCE RPC;对于MTS,它是DCOM;等等)1995/96年,这些传统的应用服务器产品开始嵌入基本的HTTP通信功能,最初是通过网关。线条开始模糊。

Web服务器在处理更高的负载、更多的并发性和更好的功能方面变得越来越成熟。应用服务器提供了越来越多的基于HTTP的通信功能。

此时,“应用服务器”和“web服务器”之间的界限是模糊的。但作为一个重点,人们继续使用不同的术语。当有人说“web服务器”时,你通常会想到以HTTP为中心、面向web UI的应用程序。当有人说“应用服务器”时,你可能会想到“更重的负载、企业功能、事务和排队、多渠道通信(HTTP+更多)。但通常是同一个产品同时满足两组工作负载要求。”。

IBM的“应用服务器”WebSphere有自己的捆绑web服务器。另一个传统的应用服务器WebLogic也是如此。Windows是微软的应用服务器(除了作为其文件和打印服务器、媒体服务器等),捆绑了IIS。

从上面那些很棒的SO福音传道者的帖子中得出我的结论,我得出结论,两者都是驻留在实际金属服务器(物理服务器)上的软件。两者携手合作,为最终用户提供服务。然后,根据设置,我们可以选择调用它,这意味着如何描述它取决于实际使用的设置。如果它们都位于同一个裸机(物理服务器)上,我们称之为web和应用服务器。。。易于理解的如果在不同的机器上,显然,我们手中有两个不同的裸机(物理服务器)。然后,我们可以根据这些服务器的功能来标记它们:一个web服务器和另一个应用程序服务器。

应用程序服务器的设计和部署通常是为了促进运行时间更长的进程,而这些进程也将更加耗费资源。

web服务器通常用于资源不密集的短突发。这主要是为了方便提供基于web的流量。