应用程序服务器和Web服务器之间有什么区别?


Answers:


620

大多数情况下,这些术语Web服务器和应用程序服务器可互换使用。

以下是Web Server和Application Server功能的一些主要区别:

  • Web服务器旨在提供HTTP内容。App Server也可以提供HTTP内容,但不仅限于HTTP。可以提供其他协议支持,例如RMI / RPC
  • 尽管大多数Web服务器都有插件来支持脚本语言(如Perl,PHP,ASP,JSP等),这些服务器可以通过这些插件生成动态HTTP内容,但Web Server大多设计为可提供静态内容。
  • 大多数应用程序服务器将Web服务器作为其中不可或缺的一部分,这意味着App Server可以执行Web Server能够执行的任何工作。此外,App Server具有支持应用程序级服务的组件和功能,例如连接池,对象池,事务支持,消息服务等。
  • 由于Web服务器非常适合静态内容,而应用程序服务器非常适合动态内容,因此大多数生产环境都将Web服务器用作应用程序服务器的反向代理。这意味着在处理页面请求时,由解释请求的Web服务器提供静态内容(例如图像/静态HTML)。Web服务器使用某种过滤技术(主要是请求资源的扩展)识别动态内容请求并透明地转发到应用服务器

这种配置的示例是Apache Tomcat HTTP Server和Oracle(以前称为BEA)WebLogic Server。Apache Tomcat HTTP Server是Web服务器,Oracle WebLogic是应用程序服务器。

在某些情况下,服务器是紧密集成的,例如IIS和.NET Runtime。IIS是Web服务器。当配备.NET运行时环境时,IIS能够提供应用程序服务。


18
JBoss(现在为WildFly)也是应用服务器的著名示例:D
KNU

4
很好的解释,因为我们可以使用应用程序服务器代替Web服务器,所以对于单个应用程序同时拥有Web服务器和应用程序服务器有什么好处?而性能明智的最佳选择是什么?
Lalinda Sampath

33
“ Apache Tomcat HTTP服务器是Web服务器,而Oracle WebLogic是应用程序服务器。” 因此,首先,Apache Tomcat和Apache HTTP服务器是两种不同的产品。这并不是一个准确的说法。Apache Tomcat是应用程序服务器。当然,它也可以提供网页服务,但是它是用于部署Java的应用程序服务器。我意识到很多人都在宽松地使用“ Web服务器”一词。但这只会使人感到困惑。
ironarm '17

18
Apache Tomcat不是Web服务器,它是运行Javaservelet的应用程序服务器。Apache HTTP服务器是Web服务器。没有称为Apache Tomcat HTTP服务器的服务器。
Abhishek Pathak

3
-1用于混淆Apache Tomcat和Apache HTTPD。 stackoverflow.com/questions/30632/...
培根

154

这是对某些情况的详细解答,目的是清楚地了解它们之间的差异,相似性以及两者如何共同工作

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,以实时处理其提取的所有数据。

希望这可以帮助。


10
即使对于Web应用程序,这也不是准确/令人困惑的(即,术语应用程序服务器适用于非Web应用程序)。仅考虑Web:Web服务器包括用于处理Web请求(http)的软件(apache,nginx)。应用程序服务器包含/公开应用程序(例如php代码)。它们可能是同一台计算机,但可能不是-例如,将一台计算机(Web服务器)上的Nginx转发到另一台计算机(应用程序服务器)上的php-fpm本身是不正常的,这被认为是正常的。 http访问(仅公开php-fpm本身的端口)。
AD7six 2014年

@ AD7six Web服务器专门处理HTTP请求,而应用程序服务器通过任何数量的协议(包括HTTP)处理应用程序的业务逻辑。
Durai Amuthan.H 2014年

我的观点是应用服务器可以处理http请求,但这绝不是必需的。the application server deals with several different protocols, including, but not limited, to HTTP<-表示确实可以处理http请求-这是不正确的。
AD7six 2014年

6
重新阅读给出的示例后,我在这里看不到任何真正的清晰度-这些描述主要与缓存有关。需要明确的是,网络服务器是软件,应用程序是软件。如果它们部署在同一台计算机上,则可以根据需要引用该计算机。如果它们在不同的计算机上,通常将运行Web服务器的一台服务器称为 Web服务器,将运行应用程序的一台服务器称为应用服务器。通常,您会根据负载和负载平衡来划分事物。总的来说,我发现这个答案并没有增加任何有用的东西。
AD7six 2014年

@ AD7six我的答案是对其他答案的补充,即其他答案已经意味着您所要求的只是其扩展。
Durai Amuthan.H 2014年

136

这两个术语非常通用,在某些情况下,一个包含另一个,反之亦然。

  • Web服务器:使用http协议将内容提供到Web。

  • 应用程序服务器:托管和公开业务逻辑和流程。

我认为主要要点是Web服务器通过http协议公开所有内容,而应用程序服务器不限于此。

也就是说,在许多情况下,您会发现Web服务器被用于创建应用程序服务器的前端,也就是说,它公开了一组Web页面,这些页面允许用户与在Web服务中找到的业务规则进行交互。应用服务器。


66

网络服务器

运行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映射到我们代码库中的某个特定位置,因此我们假设在显示一些有关程序工作方式的逻辑。


翻盖

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

应用服务器 -提供即时生成的文件。本质上,大多数Web服务器都具有某种插件,甚至具有内置功能。还有严格的应用程序服务器,例如Gunicorn(Python),Unicorn(Ruby),uWSGI(Python)等。

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


这是最好,最简洁的答案。我想知道是否可以将Web服务器视为应用程序服务器的子集。现在,我正在考虑将其作为Web服务器就像一个getter方法,而一个应用服务器就像一个工厂方法(其中URL是构造函数自变量:D)

8
Uff ..最后,感谢您提供Python观点。就本主题而言,与语言无关的事实并非如此。从未使用过EJB的人不会清楚地理解面向Java的答案。
Vikas

谢谢。“要运行此代码,我们需要一个应用程序服务器”,您能否指定用于运行flask程序的应用程序服务器?
蒂姆(Tim)

这是一个几乎完美的答案
Ramy Farid

65

正如Rutesh和jmservera所指出的,这种区别是模糊的。从历史上看,它们是不同的,但是到了90年代,这两个以前截然不同的类别将特征融合在一起并有效地融合在一起。此时,最好是可以想象“ App Server”产品类别是“ Web服务器”类别的严格超集。

一些历史。在Mosaic浏览器和超链接内容的早期,发展了一种叫做“ Web服务器”的东西,它通过HTTP提供网页内容和图像。大部分内容都是静态的,HTTP 1.0协议只是一种随身携带文件的方式。很快,“ Web服务器”类别演变为包括CGI功能-在每个Web请求上有效启动一个流程以生成动态内容。HTTP也已经成熟,产品变得更加复杂,具有缓存,安全性和管理功能。随着技术的成熟,我们从Kiva和NetDynamics获得了特定于公司的基于Java的服务器端技术,这些技术最终都合并到了JSP中。我认为是在1996年,Microsoft将ASP添加到Windows NT 4.0中。静态网络服务器学到了一些新技巧,因此它是一种有效的“

在平行类别中,应用服务器已经发展并存在了很长时间。两家公司为Unix提供了Tuxedo,TopEnd,Encina等产品,这些产品从哲学上衍生自IMS和CICS等大型机应用程序管理和监视环境。Microsoft提供的产品是Microsoft Transaction Server(MTS),后来演变为COM +。这些产品大多数都指定了“封闭式”产品特定的通信协议,以将“胖”客户端互连到服务器。(对于Encina,comms协议是DCE RPC;对于MTS,它是DCOM;等等。)1995/96年,这些传统的应用服务器产品首先通过网关开始嵌入基本的HTTP通信功能。线条开始模糊。

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

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

  • WebSphere,IBM的“应用服务器”具有自己的捆绑式Web服务器。
  • 同样,另一个传统的应用服务器WebLogic。
  • Windows是Microsoft的App Server(除了是其File&Print Server,Media Server等),还捆绑了IIS。

答案很明确。但是,您能否详细说明允许Web服务器充当应用程序服务器的“新技巧”。
Quazi Irfan

3
“新技巧”暗示着正在运行服务器端逻辑。脚本逻辑,例如ASP或其他。原始的“ Web服务器”刚刚从文件系统返回了静态内容。现在,我们已经走了很长一段路。
Cheeso 2015年

36

正如许多人之前所说,Web服务器处理HTTP请求,而应用程序服务器处理分布式组件的请求。因此,了解差异的最简单方法就是比较两种产品的编程环境。

Web服务器->编程环境

IIS:ASP(.NET)

Tomcat:Servlet

码头:Servlet

阿帕奇:PHP,CGI

应用服务器->编程环境

MTS:COM +

WAS:EJB

JBoss:EJB

WebLogic应用服务器:EJB

关键的区别是应用服务器支持某种分布式组件技术,提供诸如远程调用和分布式事务之类的功能,例如Java世界中的EJB或Microsoft平台上的COM +。Http服务器通常支持一些更简单的编程环境,通常是脚本编写,例如对于基于Microsoft或Servlet的ASP(.NET),包括JSP以及对于Java或PHP的许多其他环境,对于Apache的CGI。

以前在应用程序服务器领域中的其他功能(如负载平衡,群集,会话故障转移,连接池等)也可以直接或通过某些第三方产品在Web服务器上使用。

最后,值得注意的是,诸如“ Spring框架”之类的“轻量级容器”使图片进一步失真,该容器通常以更简单的方式补充了应用服务器的目的,并且没有应用服务器基础结构。而且,由于应用程序中的分发方面正从分布式组件向服务范式和SOA体系结构转变,因此传统应用程序服务器所剩空间越来越少。


您列出的任何应用程序服务器都可以用作apache http之类的http Web服务器吗?
LearningMath

22

Web服务器和应用程序服务器之间的主要区别在于,Web服务器用于服务静态页面(例如HTML和CSS),而Application Server负责通过执行服务器端代码(例如JSP,Servlet或EJB)来生成动态内容。

我应该使用哪一个?
一旦知道了Web和应用程序服务器以及Web容器之间的区别,就很容易弄清楚何时使用它们。web server如果要提供静态网页,则需要类似Apache HTTPD的文件。如果您有一个仅使用JSP和Servlet来生成动态内容的Java应用程序,则需要web containers像Tomcat或Jetty。同时,如果您拥有使用EJB,分布式事务,消息传递和其他精美功能的Java EE应用程序需要application server像JBoss,WebSphere或Oracle的WebLogic这样的完整功能

Web容器是Web Server的一部分,而Web Server是Application Server的一部分。

应用服务器

Web Server由Web容器组成,而Application Server由Web容器以及EJB容器组成。


“ Web服务器由Web容器组成”:按照youtu.be/ATObcDPLa40的视频,这是错误的
Vyshnav Ramesh Thrissur,

20

简而言之,Web服务器是通过http为用户提供网页的服务器。一个应用服务器是托管业务逻辑的系统的服务器。它通常托管长时间运行/批处理过程和/或非供人使用的互操作服务(REST / JSON服务,SOAP,RPC等)。


2
术语“主机是业务逻辑”是什么意思?如何执行?
TwiggedToday,2009年

是否通过Web服务向客户公开业务逻辑?
TwiggedToday,2009年

它可以通过Web服务来提供,也可以通过任何其他接口来提供(TCP,MQ,共享上的平面文件(我不建议最后一个))。
C. Ross,

这可能会产生误导。应用程序服务器不承载任何内容。您的代码托管业务逻辑,而应用程序服务器则充当业务逻辑与用户请求的网页之间的粘合剂。
Pithikos

18

Web服务器专门处理HTTP / HTTPS请求。它使用HTTP / HTTPS协议将内容提供给Web。

应用服务器通过任何数量的协议(可能包括HTTP)为应用程序提供业务逻辑。应用程序可以像在对象上调用方法一样使用此逻辑。在大多数情况下,服务器通过组件API公开此业务逻辑,例如在Java EE(Java平台,企业版)应用程序服务器上找到的EJB(Enterprise JavaBean)组件模型。要点是,Web服务器通过http协议公开所有内容,而应用服务器不限于此。因此,与Web服务器相比,应用服务器提供的服务要多得多,Web服务器通常包括:

  • 一个(专有或非专有)API
  • 负载平衡,故障转移...
  • 对象生命周期管理
  • 国家管理(会议)
  • 资源管理(例如,数据库的连接池)

大多数应用程序服务器将Web服务器作为其中不可或缺的一部分,这意味着App Server可以执行Web Server能够执行的任何工作。此外,App Server具有支持应用程序级服务的组件和功能,例如连接池,对象池,事务支持,消息服务等。

应用程序服务器可以(但不总是)在Web服务器上运行以执行程序逻辑,然后可以由Web服务器传递其结果。这是Web服务器/应用程序服务器方案的一个示例。在Microsoft世界中,一个很好的例子是Internet Information Server / SharePoint Server关系。IIS是一个Web服务器;SharePoint是应用程序服务器。SharePoint位于IIS的“顶部”,执行特定的逻辑,并通过IIS提供结果。在Java世界中,例如,Apache和Tomcat存在类似的情况。

由于Web服务器非常适合静态内容,而应用程序服务器非常适合动态内容,因此大多数生产环境都将Web服务器用作应用程序服务器的反向代理。这意味着,在服务页面请求时,由解释请求的Web服务器提供图像/静态html之类的静态内容。Web服务器使用某种过滤技术(主要是请求资源的扩展)来识别动态内容请求,并透明地转发到应用服务器。

这样的配置示例是Apache HTTP Server和BEA WebLogic Server。Apache HTTP Server是Web服务器,而BEA WebLogic是Application Server。在某些情况下,服务器是紧密集成的,例如IIS和.NET Runtime。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+

2
提到了其他东西,但是在我看来,很多东西都像是窃。就像列表末尾一样,好像是从Dan的帖子中复制的一样。还有“ ...向应用程序服务器的反向代理...”最后还部分使用HTTP Server和BEA WebLogic Server作为示例,与Rutesh Makhijani编写的几乎相同。
臭小子

10

应用服务器的设计和部署通常是为了促进运行时间更长的进程,这也会占用更多资源。

Web服务器通常用于不占用大量资源的短脉冲。这主要是为了方便提供基于Web的流量。


10

两者之间的边界越来越窄。

应用程序服务器向客户端公开业务逻辑。这意味着应用程序服务器由一组方法(虽然不是排他性地,甚至可以是允许许多计算机在其上运行软件的联网计算机)执行业务逻辑。因此,它将仅输出所需的结果,而不是HTML内容。(类似于方法调用)。因此,它并非严格基于HTTP。

但是Web服务器将HTML内容传递给Web浏览器(严格基于HTTP)。Web服务器只能处理静态Web资源,但是服务器端脚本的出现使Web服务器也可以处理动态内容。Web服务器接收请求并将其定向到相关脚本(PHP,JSP,CGI脚本等)的位置,以创建要发送到客户端的HTML内容。接收到内容后,Web服务器将HTML页面发送给客户端。

但是,如今这两个服务器已一起使用。Web服务器在哪里接收请求,然后调用脚本来创建HTML内容。然后,脚本将再次调用应用程序服务器LOGIC(例如,检索事务详细信息)以填充HTML内容。

因此,这两台服务器均得到有效利用。

因此....我们可以放心地说,当今,在大多数情况下,Web服务器被用作应用程序服务器的子集。但在戏剧上并非如此。

我已阅读有关此主题的许多文章,发现条非常方便。


9

用Java术语来说,还有一个:Web容器(或更严格地说是servlet容器)。就是说,它介于Web服务器和应用程序服务器之间。

用Java术语来说,Web容器是一种应用程序服务器,它基本上实现Java EE的JSP / Servlet部分,而缺少Java EE的几个核心部分,例如EJB支持。一个示例是Apache Tomcat。


8

应用程序服务器是一台机器(实际上是在某台机器上运行的可执行进程),它“侦听”(在任何通道上,使用任何协议),以请求来自客户端的请求以提供其提供的任何服务,然后根据这些请求执行某些操作。(可能涉及也可能不涉及对客户的退还)

Web服务器是在计算机上运行的进程,该计算机使用“互联网”协议(http,https,ftp等)之一专门在“ TCP / IP通道”上进行“监听”,并根据传入的请求执行任何操作。通常,(按原始定义),它从服务器上的静态html文件中提取或生成,并根据传入的客户端请求中的参数动态构造/获取并生成html网页并返回给客户端。


3
能否请您举例说明一下浴箱。
frewper

您能否提供两个示例?谢谢。
LearningMath

8

Web服务器运行HTTP协议来提供网页。应用程序服务器可以(但不总是)在Web服务器上运行以执行程序逻辑,然后可以由Web服务器传递其结果。这是Web服务器/应用程序服务器方案的一个示例。

在Microsoft世界中,一个很好的例子是Internet Information Server / SharePoint Server关系。IIS是一个Web服务器;SharePoint是应用程序服务器。SharePoint位于IIS的“顶部”,执行特定的逻辑,并通过IIS提供结果。

在Java世界中,例如,Apache和Tomcat存在类似的情况。


8

一方面,Web服务器通过HTTP协议提供Web内容(HTML和静态内容)。另一方面,应用程序服务器是一个容器,您可以在其上构建业务逻辑和流程,并通过各种协议(包括n层体系结构中的HTTP)向客户端应用程序公开业务逻辑和流程。

因此,与Web服务器相比,应用服务器提供的服务要多得多,Web服务器通常包括:

  • 一个(专有或非专有)API
  • 对象生命周期管理,
  • 状态管理(会议),
  • 资源管理(例如,数据库的连接池),
  • 负载平衡,故障转移...

AFAIK,ATG Dynamo是90年代后期的第一批应用服务器之一(根据上述定义)。在2000年初,它是一些专有应用服务器的统治,例如ColdFusion(CFML AS),BroadVision(服务器端JavaScript AS)等。但是,没有一个真正地幸免于Java应用服务器时代。


6

基本认识:

在客户端服务器架构中

服务器:>服务于请求。

客户端:>使用服务。

Web服务器和应用程序服务器都是充当其客户端服务器的软件应用程序。

他们根据使用地点而得名。

Web server :> serve web content
           :> Like Html components
           :> Like Javascript components
           :> Other web components like images,resource files
           :> Supports mainly web protocols like http,https.
           :> Supports web Request & Response formats.

用法-

      we require low processing rates,

      regular processing practices involves.

例如:通常所有现成的平面服务器都是现成的,仅提供基于Web的内容。

Application server :> Serve application content/component data(Business data).
                   :> These are special kind which are custom written 
                      designed/engineered for specific
                      purpose.some times fully unique in 
                      their way and stands out of the crowd. 

                   :> As these serves different types of data/response contents
                   :> So we can utilize these services for mobile client,web 
                      clients,intranet clients. 
                   :> Usually application servers are services offered on different 
                      protocols.    
                   :> Supports different Request& Response formats.

用法-

      we require multi point processing,

      specialized processing techniques involves like for AI.

例如:Google Maps服务器,Google搜索服务器,Google docs服务器,Microsoft 365服务器,用于AI的Microsoft计算机视觉服务器。

我们可以将它们假定为4层/ n层体系结构中的层/层级。

 So they can provide 
                    load balancing,
                    multiple security levels,
                    multiple active points,
                    even they can provide different request processing environments.

请按照以下链接进行标准体系结构类比:

https://docs.microsoft.com/zh-cn/previous-versions/msp-np/ee658120(v%3dpandp.10)


5

最大的不同是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑。


5

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


4

以上所有内容都使非常简单的事情变得过于复杂。应用程序服务器包含一个Web服务器,与标准Web服务器相比,该应用程序服务器仅对其添加/扩展了几个。如果以TomEE为例:

CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal

您将看到Tomcat(Web容器/服务器)只是应用程序服务器中的另一个工具。如果需要,您也可以在Web服务器中获得JPA和其他技术,但是应用程序服务器只是为了方便而打包了所有这些内容。要完全归类为应用服务器,您实际上需要遵守某些标准提出的一系列工具。


2

不一定有明确的分界线。如今,许多程序结合了两者的元素-服务http请求(Web服务器)和处理业务逻辑(应用服务器)


2

https://en.wikipedia.org/wiki/Web_server

一个Web服务器是通过HTTP进程的请求,基本的网络协议,用于分发万维网上的信息的计算机系统。该术语可以指整个系统,也可以指接受和监督HTTP请求的软件。

来自https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

应用程序服务器在Web服务器(例如Apache或Microsoft Internet信息服务(IIS))之后运行,并且(几乎始终)在SQL数据库(例如PostgreSQL,MySQL或Oracle)之前运行。

Web应用程序是在应用程序服务器上运行的计算机代码,并以应用程序服务器支持的语言编写,并调用应用程序服务器提供的运行时库和组件。


2

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

Web Server旨在提供HTTP静态内容(如HTML,图像等),而为动态内容提供插件以支持脚本语言(如Perl,PHP,ASP,JSP等),并且仅限于HTTP协议。下面的服务器可以生成动态HTTP内容。

Web服务器的编程环境:

IIS:ASP(.NET)

Apache Tomcat:Servlet

码头:Servlet

Apache:PHP,CGI

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

应用服务器的编程环境:

MTS:COM +

WAS:EJB

JBoss:EJB

WebLogic应用服务器:EJB


1

虽然两者之间可能存在重叠(某些Web服务器甚至可能用作应用程序服务器),但IMHO的最大区别在于处理模型和会话管理:

在Web服务器处理模型中,重点是处理请求。“会话”的概念几乎是虚构的。也就是说,通过在客户端和服务器之间传输状态表示(因此称为REST)和/或将其序列化到外部持久存储(SQL Server,Memcached等)来模拟“会话”。

在应用程序服务器中,会话通常是更明确的,并且通常采用在“会话”的整个持续时间内都驻留在应用程序服务器内存中的对象的形式。


0

这取决于特定的体系结构。某些应用程序服务器可能本地使用Web协议(HTTP上的XML / RPC / SOAP),因此技术上的差异很小。通常,Web服务器是面向用户的,通过HTTP / HTTPS提供各种内容,而应用程序服务器不是面向用户的,并且可以使用非标准或不可路由的协议。当然,使用RIA / AJAX,两者之间的差异可能会进一步模糊,仅向提供特定远程访问服务的客户端提供非HTML内容(JSON / XML)。


0

IMO,主要是关于分离关注点。

从纯粹的技术角度来看,您可以在单个Web服务器中完成所有工作(Web内容+业务逻辑)。如果您愿意这样做,那么信息将被嵌入到请求的HTML内容中。会有什么影响?

例如,假设您有2个不同的应用程序,它们在浏览器中呈现完全不同的HTML内容。如果将业务逻辑分离到应用服务器中,则可以提供不同的Web服务器,以通过脚本在应用服务器中查找相同的数据。但是,如果您不分离逻辑并将其保留在Web服务器中,则无论何时更改业务模型,最终都会在您拥有的每个Web服务器中进行更改,这将花费更多时间,可靠性和可靠性降低。容易出错。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.