应用服务器和Web服务器有什么区别?
28 回答
大多数时候,这些术语 Web 服务器和应用程序服务器可以互换使用。
以下是 Web Server 和 Application Server 在功能上的一些主要区别:
- Web 服务器旨在提供 HTTP 内容。App Server 也可以提供 HTTP 内容,但不仅限于 HTTP。可以提供RMI/RPC等其他协议支持
- Web 服务器主要设计用于提供静态内容,尽管大多数 Web 服务器都有插件来支持 Perl、PHP、ASP、JSP 等脚本语言,这些服务器可以通过这些插件生成动态 HTTP 内容。
- 大多数应用服务器都将 Web Server 作为其不可或缺的一部分,这意味着 App Server 可以做任何 Web Server 能够做的事情。此外,App Server 具有支持应用程序级服务的组件和功能,例如连接池、对象池、事务支持、消息传递服务等。
- 由于 web 服务器非常适合静态内容和动态内容的应用程序服务器,因此大多数生产环境都将 web 服务器用作应用程序服务器的反向代理。这意味着在处理页面请求时,静态内容(例如图像/静态 HTML)由解释请求的 Web 服务器提供。使用某种过滤技术(主要是请求资源的扩展)Web 服务器识别动态内容请求并透明地转发到应用服务器
此类配置的示例是 Apache Tomcat HTTP Server 和 Oracle(以前称为 BEA)WebLogic Server。Apache Tomcat HTTP Server 是 Web 服务器,Oracle WebLogic 是应用程序服务器。
在某些情况下,服务器是紧密集成的,例如 IIS 和 .NET Runtime。IIS 是网络服务器。当配备.NET 运行环境时,IIS 能够提供应用程序服务。
这是一些场景的详细答案,可以清楚地了解差异和相似之处,以及两者如何协同工作。
应用程序服务器是一个有时与Web 服务器混合使用的术语。Web 服务器主要处理HTTP 协议,而应用程序服务器处理几种不同的协议,包括但不限于 HTTP。
Web服务器的主要工作是显示网站内容,应用服务器负责逻辑,用户与显示内容的交互。应用程序服务器与 Web 服务器一起工作,一个显示,另一个交互。
服务器和客户端之间来回传输的信息不仅限于简单的显示标记,还限于两者之间的交互。
在大多数情况下,服务器通过组件 API 创建这种交互,例如J2EE(Java 2 平台)、EJB(企业 JavaBean)和其他不同的应用软件模型。
一个例子:
了解应用程序服务器与 Web 服务器一起使用的场景与没有应用程序服务器的场景之间的区别的最佳方法是通过在线商店。
场景 1:没有应用程序服务器的 Web 服务器
您有一个只有 Web 服务器而没有应用程序服务器的在线商店。该网站将提供一个展示,您可以从中选择产品。当您提交查询时,站点会执行查找并将 HTML 结果返回给其客户端。Web 服务器将您的查询直接发送到数据库服务器(请耐心等待,我将在下一篇文章中解释这一点)并等待响应。收到后,Web 服务器会将响应制定为 HTML 文件并将其发送到您的 Web 浏览器。每次运行查询时都会发生服务器和数据库服务器之间的这种来回通信。
场景 2:带有应用程序服务器的 Web 服务器
如果您要运行的查询之前已经完成并且此后没有数据更改,则服务器将生成结果而无需将请求发送到数据库服务器。这允许实时查询,其中第二个客户端可以访问相同的信息并接收实时、可靠的信息,而无需向数据库服务器发送另一个重复查询。服务器基本上充当数据库服务器和 Web 服务器之间的中介。这允许在第一种情况下提取的信息可重用,因为此信息嵌入在特定的“自定义”HTML 页面中,这不是可重用的过程。第二个客户端将不得不再次请求信息并接收另一个包含所请求信息的 HTML 嵌入页面 - 效率非常低。
为了支持如此多样的复杂任务,该服务器必须具有内置冗余、强大的处理能力和大量 RAM,以实时处理它正在提取的所有数据。
这两个术语都非常通用,一个包含另一个,在某些情况下反之亦然。
Web 服务器:使用 http 协议向 Web 提供内容。
应用服务器:托管和公开业务逻辑和流程。
我认为主要的一点是Web服务器通过http协议暴露一切,而应用服务器不限于此。
也就是说,在很多场景中,您会发现 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 映射/
到 functionhomepage()
和/about
function about()
。
要运行此代码,我们需要一个应用服务器(例如 Gunicorn)——一个可以监听来自客户端的请求并使用我们的代码动态返回某些内容的程序或模块。在示例中,我们只是返回了一些非常糟糕的 HTML。
其他人都在谈论的业务逻辑是什么?好吧,由于 URL 映射到我们代码库中的某个特定位置,因此我们假设展示了一些关于我们的程序如何工作的逻辑。
重述
Web 服务器- 提供存储在某处的文件(最常见的是 .css、.html、.js)。常见的 Web 服务器是 Apache、Nginx 甚至 Python 的 SimpleHTTPServer。
应用程序服务器- 提供动态生成的文件。本质上,大多数 Web 服务器都有某种插件,甚至带有内置功能来做到这一点。也存在严格的应用服务器,如 Gunicorn (Python)、Unicorn (Ruby)、uWSGI (Python) 等。
请注意,您实际上可以使用应用程序服务器的代码构建 Web 服务器。这在开发过程中的某些情况下完成,您不希望在您的计算机上运行大量不同的服务器。
正如 Rutesh 和 jmservera 所指出的,这种区别是模糊的。从历史上看,它们是不同的,但到 90 年代,这两个先前截然不同的类别融合了特征并有效地融合在一起。此时最好将“App Server”产品类别想象为“Web 服务器”类别的严格超集。
一些历史。在 Mosaic 浏览器和超链接内容的早期,出现了一种称为“网络服务器”的东西,它通过 HTTP 提供网页内容和图像。大多数内容是静态的,HTTP 1.0 协议只是一种传送文件的方式。“Web 服务器”类别很快演变为包括 CGI 功能——有效地在每个 Web 请求上启动一个进程以生成动态内容。HTTP 也变得成熟,产品变得更加复杂,具有缓存、安全和管理功能。随着技术的成熟,我们从 Kiva 和 NetDynamics 那里获得了公司特定的基于 Java 的服务器端技术,最终都合并到了 JSP 中。微软在 Windows NT 4.0 中添加了 ASP,我认为是在 1996 年。静态 Web 服务器学习了一些新技巧,因此它是一个有效的“
在并行类别中,应用服务器已经发展并存在了很长时间。公司为 Unix 提供了 Tuxedo、TopEnd、Encina 等产品,这些产品在哲学上源自大型机应用程序管理和监控环境,如 IMS 和 CICS。Microsoft 的产品是 Microsoft Transaction Server (MTS),后来演变成 COM+。这些产品中的大多数都指定了“封闭的”特定于产品的通信协议,以将“胖”客户端与服务器互连。(对于 Encina,通信协议是 DCE RPC;对于 MTS,是 DCOM;等等。)在 1995/96 年,这些传统的应用服务器产品开始嵌入基本的 HTTP 通信能力,首先是通过网关。线条开始模糊。
Web 服务器在处理更高的负载、更多的并发性和更好的功能方面变得越来越成熟。应用服务器提供了越来越多的基于 HTTP 的通信能力。
此时,“应用服务器”和“Web 服务器”之间的界限是模糊的。但人们继续以不同的方式使用这些术语,作为强调的问题。当有人说“Web 服务器”时,您通常会想到以 HTTP 为中心、Web UI 和面向应用程序。当有人说“应用服务器”时,您可能会想到“更重的负载、企业功能、事务和队列、多通道通信(HTTP + 更多)。但通常它是同时满足两组工作负载需求的同一个产品。
- WebSphere,IBM 的“应用服务器”拥有自己的捆绑 Web 服务器。
- WebLogic,另一个传统的应用服务器,同样如此。
- Windows 是微软的应用服务器(除了是它的文件和打印服务器、媒体服务器等),它捆绑了 IIS。
正如许多人之前所说,Web 服务器处理 HTTP 请求,而应用程序服务器处理分布式组件的请求。因此,了解差异的最简单方法可能是比较这两种产品提供的编程环境。
Web 服务器 -> 编程环境
IIS:ASP(.NET)
Tomcat:小服务程序
码头:Servlet
阿帕奇:PHP,CGI
应用服务器 -> 编程环境
MTS:COM+
是:EJB
JBoss : EJB
WebLogic 应用服务器:EJB
关键的区别在于应用服务器支持一些分布式组件技术,提供远程调用和分布式事务等特性,如Java世界中的EJB或微软平台上的COM+ 。Http 服务器通常支持一些更简单的编程环境,通常是脚本,例如在 Microsoft 或基于 Servlet 的情况下的 ASP (.NET),包括 JSP 和许多其他情况下的 Java 或 PHP 和 CGI 情况下的 Apache。
其他功能,如负载平衡、集群、会话故障转移、连接池等,以前属于应用程序服务器领域,现在也可以直接或通过某些第三方产品在 Web 服务器上使用。
最后,值得注意的是,像 Spring Framework 这样的“轻量级容器”进一步扭曲了画面,这些容器通常以更简单的方式补充应用程序服务器的目的,并且没有应用程序服务器基础设施。而且由于应用程序中的分布方面正在从分布式组件转向服务范式和 SOA 架构,因此留给传统应用程序服务器的空间越来越少。
Web 服务器和应用程序服务器之间的主要区别在于,Web 服务器旨在为静态页面提供服务,例如 HTML 和 CSS,而应用程序服务器负责通过执行服务器端代码(例如 JSP、Servlet 或 EJB)来生成动态内容。
我应该使用哪一个?
一旦您了解了 Web 和应用程序服务器以及 Web 容器之间的区别,就很容易弄清楚何时使用它们。web server
如果您提供静态网页,则需要类似 Apache HTTPD。如果您的 Java 应用程序只有 JSP 和 Servlet 来生成动态内容,那么您需要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 服务器专门处理 HTTP/HTTPS 请求。它使用 HTTP/HTTPS 协议向 Web 提供内容。
应用服务器通过任意数量的协议(可能包括 HTTP)为应用程序提供业务逻辑。应用程序可以像调用对象的方法一样使用这个逻辑。在大多数情况下,服务器通过组件 API 公开此业务逻辑,例如 Java EE(Java 平台,企业版)应用服务器上的 EJB(企业 JavaBean)组件模型。重点是Web服务器通过http协议暴露一切,而应用服务器不限于此。因此,应用服务器提供的服务比 Web 服务器多得多,后者通常包括:
- A(专有或非专有)API
- 负载均衡、故障转移...
- 对象生命周期管理
- 状态管理(会话)
- 资源管理(例如到数据库的连接池)
大多数应用服务器都将 Web Server 作为其不可或缺的一部分,这意味着 App Server 可以做任何 Web Server 能够做的事情。此外,App Server 具有支持应用程序级服务的组件和功能,例如连接池、对象池、事务支持、消息传递服务等。
应用程序服务器可以(但不总是)在 Web 服务器上运行以执行程序逻辑,然后由 Web 服务器传递其结果。这是 Web 服务器/应用程序服务器场景的一个示例。Microsoft 世界中的一个很好的例子是 Internet Information Server / SharePoint Server 关系。IIS 是一个网络服务器;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 是网络服务器。当配备 .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+
这两者之间的界限越来越细。
应用程序服务器向客户端公开业务逻辑。这意味着应用程序服务器由一组方法组成(尽管不完全是,甚至可以是允许许多人在其上运行软件的联网计算机)来执行业务逻辑。所以它只会输出想要的结果,而不是 HTML 内容。(类似于方法调用)。所以它不是严格基于 HTTP 的。
但是 Web 服务器将 HTML 内容传递给 Web 浏览器(严格基于 HTTP)。Web 服务器只能处理静态 Web 资源,但服务器端脚本的出现允许 Web 服务器也可以处理动态内容。Web 服务器接收请求并将其定向到相关脚本(PHP、JSP、CGI 脚本等)以创建要发送到客户端的 HTML 内容。收到内容后,Web 服务器会将 HTML 页面发送给客户端。
但是,现在这两个服务器一起使用。Web 服务器接受请求,然后调用脚本来创建 HTML 内容。然后,该脚本将再次调用应用服务器LOGIC(例如检索交易细节)来填充HTML 内容。
所以这两个服务器都被有效地使用了。
因此....我们可以肯定地说,如今,在大多数情况下,Web 服务器被用作应用程序服务器的子集。但在戏剧上并非如此。
我已经阅读了很多关于这个主题的文章,发现这篇文章非常方便。
在 Java 术语中,还有一个:Web 容器(或更严格地说,是 servlet 容器)。例如,它位于 Web 服务器和应用程序服务器之间。
Java 术语中的 Web 容器是一种应用服务器,基本上只实现了 Java EE 的 JSP/Servlet 部分,缺少 Java EE 的几个核心部分,例如 EJB 支持。一个例子是 Apache Tomcat。
应用程序服务器通常被设计和部署以促进运行时间更长的进程,这些进程也将更加资源密集。
Web 服务器通常用于资源密集型的短时间突发。这主要是为了方便提供基于 Web 的流量。
Web 服务器运行 HTTP 协议来提供网页。应用程序服务器可以(但不总是)在 Web 服务器上运行以执行程序逻辑,然后由 Web 服务器传递其结果。这是 Web 服务器/应用程序服务器场景的一个示例。
Microsoft 世界中的一个很好的例子是 Internet Information Server / SharePoint Server 关系。IIS 是一个网络服务器;SharePoint 是一个应用程序服务器。SharePoint 位于 IIS 的“顶部”,执行特定的逻辑,并通过 IIS 提供结果。
例如,在 Java 世界中,Apache 和 Tomcat 也有类似的情况。
应用程序服务器是一台机器(实际上是在某台机器上运行的可执行进程),它“侦听”(在任何通道上,使用任何协议),接收来自客户端对其提供的任何服务的请求,然后根据这些请求执行某些操作。(可能会或可能不会涉及对客户的回应)
Web 服务器是在一台机器上运行的进程,它使用“互联网”协议之一(http、https、ftp 等)专门在 TCP/IP 通道上“侦听”,并根据这些传入请求执行任何操作。 .. 通常,(如最初定义的那样),它获取/生成一个 html 网页并将其返回给客户端,或者从服务器上的静态 html 文件中获取,或者根据传入的客户端请求中的参数动态构建。
首先,Web 服务器通过 HTTP 协议提供 Web 内容(HTML 和静态内容)。另一方面,应用服务器是一个容器,您可以在其上构建业务逻辑和流程,并通过各种协议(包括 n 层架构中的 HTTP)向客户端应用程序公开业务逻辑和流程。
因此,应用服务器提供的服务比 Web 服务器多得多,后者通常包括:
- A(专有或非专有)API
- 对象生命周期管理,
- 状态管理(会话),
- 资源管理(例如到数据库的连接池),
- 负载均衡、故障转移...
AFAIK,ATG Dynamo是 90 年代后期最早的应用服务器之一(根据上面的定义)。2000 年初,ColdFusion (CFML AS)、BroadVision (Server-side JavaScript AS) 等一些专有应用服务器占据了主导地位,但没有一个真正能够在 Java 应用服务器时代幸存下来。
最大的区别是 Web 服务器处理 HTTP 请求,而应用程序服务器将在任意数量的协议上执行业务逻辑。
基本理解:
在客户端服务器架构中
服务器 :> 为请求提供服务。
客户 :> 哪个消耗服务。
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.
例如:谷歌地图服务器、谷歌搜索服务器、谷歌文档服务器、微软 365 服务器、微软人工智能计算机视觉服务器。
我们可以将它们假设为 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/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)
实际上 Apache 是一个 Web 服务器,而 Tomcat 是一个应用程序服务器。当 HTTP 请求到达 Web 服务器时。然后静态内容通过网络服务器发送回浏览器。是否有逻辑要做,然后将该请求发送到应用程序服务器。处理完逻辑后,将响应发送到 Web 服务器并发送到客户端。
以上所有只是使非常简单的事情过于复杂。应用程序服务器包含一个 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 和其他技术,但应用程序服务器只是为了您的方便而打包了所有这些东西。要完全归类为应用服务器,您基本上需要遵守某些标准规定的工具列表。
不一定有明确的分界线。如今,许多程序结合了两者的元素 - 服务 http 请求(Web 服务器)和处理业务逻辑(应用程序服务器)
来自https://en.wikipedia.org/wiki/Web_server
Web 服务器是一种通过 HTTP 处理请求的计算机系统,HTTP 是用于在万维网上分发信息的基本网络协议。该术语可以指整个系统,或者专门指接受和监督 HTTP 请求的软件。
来自https://en.wikipedia.org/wiki/Application_server#Application_Server_definition
应用服务器在 Web 服务器(例如 Apache 或 Microsoft Internet Information Services (IIS))之后运行,并且(几乎总是)在 SQL 数据库(例如 PostgreSQL、MySQL 或 Oracle)之前运行。
Web 应用程序是在应用程序服务器上运行并以应用程序服务器支持的语言编写并调用应用程序服务器提供的运行时库和组件的计算机代码。
应用程序服务器和 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
阿帕奇:PHP,CGI
Application Server 可以做任何 Web Server 能够做的事情,并使用任何协议进行侦听,并且 App Server 具有支持应用程序级服务的组件和功能,例如连接池、对象池、事务支持、消息传递服务等。
应用服务器的编程环境:
MTS:COM+
是:EJB
JBoss:EJB
WebLogic 应用服务器:EJB
- Web 服务器:对于每个 URL,它都会返回一个文件。这就是它所做的一切。该文件是静态内容,这意味着它在您发出请求之前存储在服务器中的某个位置。最流行的网络服务器是apache http和nginx。
- 应用服务器:对于每个 URL,它运行一些代码,用某种语言编写,生成响应并返回它。响应不预先存在,它是为您的特定请求生成的,即它是动态内容。每种语言的应用程序服务器都不同。一些流行的例子是java的tomcat/jetty ,python 的uwsgi/gunicorn。
几乎您访问的每个页面都使用两者。静态内容(例如,图像、视频)由 Web 服务器提供,其余的(您与其他用户不同的部分)由应用程序服务器生成。
虽然两者之间可能存在重叠(某些 Web 服务器甚至可以用作应用程序服务器),但恕我直言,最大的区别在于处理模型和会话管理:
在Web服务器处理模型中,重点是处理请求;“会话”的概念几乎是虚拟的。也就是说,“会话”是通过在客户端和服务器之间传输状态表示(因此是 REST)和/或将其序列化到外部持久存储(SQL Server、Memcached 等)来模拟的。
在应用程序服务器中,会话通常更明确,并且通常在“会话”的整个持续时间内以对象的形式存在于应用程序服务器的内存中。
根据严格的定义,Web 服务器是应用程序服务器的公共子集。
Web 服务器主要响应来自 Web 浏览器的超文本传输协议 (HTTP) 请求来提供静态 Web 内容,例如 HTML 页面、文件、图像、视频。
应用程序服务器通常也可以交付 Web 内容,但它的主要工作是支持最终用户客户端和服务器端应用程序代码(表示通常称为业务逻辑的代码)之间的交互,以生成和交付动态内容,例如事务结果、决策支持或实时分析。应用程序服务器的客户端可以是应用程序自己的最终用户 UI、Web 浏览器或移动应用程序,并且客户端-服务器交互可以通过任意数量的通信协议进行。
然而,在实践中,Web 服务器和应用程序服务器之间的界限变得更加模糊,特别是随着 Web 浏览器已成为首选的应用程序客户端以及用户对 Web 应用程序和 Web 应用程序性能的期望不断提高。
大多数 Web 服务器支持脚本语言(例如 ASP、JSP、PHP、Perl)的插件,这些插件使 Web 服务器能够基于服务器端逻辑生成动态内容。越来越多的应用服务器不仅包含 Web 服务器功能,而且使用 HTTP 作为它们的主要协议并支持其他协议(例如,CGI 和 CGI 变体)与 Web 服务器连接。它们还允许 Web 应用程序利用反向代理、集群、冗余和负载平衡等服务——这些服务可以提高性能和可靠性,并允许开发人员减少对基础设施的关注,而更多地关注编码。
为了使事情更加混乱,许多 Web 服务器和一些应用程序服务器被称为或称自己为Web 应用程序服务器。
底线是当今最流行的 Web 服务器和应用程序服务器是两者的混合体。您今天使用的大多数日益丰富的应用程序都具有静态 Web 内容和动态应用程序内容的组合,通过 Web 服务器和应用程序服务器技术的组合交付。
IMO,主要是关于分离关注点。
从纯技术的角度来看,您可以在单个 Web 服务器中完成所有事情(Web 内容 + 业务逻辑)。如果您这样做,那么信息将嵌入到请求的 HTML 内容中。会有什么影响?
例如,假设您有 2 个不同的应用程序,它们在浏览器上呈现完全不同的 HTML 内容。如果您将业务逻辑分离到一个应用程序服务器中,那么您可以提供不同的 Web 服务器通过脚本在应用程序服务器中查找相同的数据。但是,如果您不分离逻辑并将其保留在 Web 服务器中,那么无论何时更改您的业务模型,您最终都会在您拥有的每一个 Web 服务器中更改它,这将花费更多时间,更不可靠并且容易出错。
这取决于具体的架构。一些应用服务器可能会原生使用 Web 协议(XML/RPC/SOAP over HTTP),因此技术上的差异很小。通常,Web 服务器是面向用户的,通过 HTTP/HTTPS 提供各种内容,而应用程序服务器不是面向用户的,可能使用非标准或不可路由的协议。当然,使用 RIA/AJAX 时,差异可能会更加模糊,仅向提供特定远程访问服务的客户端提供非 HTML 内容 (JSON/XML)。