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


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

Web 服务器和应用程序服务器是允许通过互联网交换数据和服务的技术。客户端-服务器架构是互联网的底层机制。当您访问网站或应用程序时,您的浏览器(作为客户端)从远程服务器请求数据并显示响应。Web 服务器是一个软件组件,提供静态数据,如图像、文件和文本,以响应客户端的请求。应用程序服务器添加业务逻辑来计算 Web 服务器的响应。这两个术语是同义词,当今最常用的服务器软件解决方案是混合 Web 应用程序服务器。

工作原理:Web 服务器与应用程序服务器

Web 服务器和应用程序服务器具有不同的独立进程。但是,两者对最终用户均不可见。

Web 服务器的工作原理

Web 服务器是托管网站代码和数据的技术。当您在浏览器中输入 URL 时,该 URL 实际上是 Web 服务器的地址标识符。

您的浏览器和 Web 服务器的通信方式如下:

  1. 浏览器使用 URL 来查找服务器的 IP 地址
  2. 浏览器发送 HTTP 请求以获取信息
  3. Web 服务器与数据库服务器通信以查找相关数据
  4. Web 服务器在浏览器的 HTTP 响应中返回静态内容,例如 HTML 页面、图像、视频或文件
  5. 然后,浏览器向您显示信息

托管博客、标题图片或文章等静态内容的网站可以在 Web 服务器上运行。但是,大多数网站与 Web 应用程序的交互性要强得多,需要应用程序服务器。

应用程序服务器的工作原理

应用程序服务器通过支持动态内容生成、应用程序逻辑以及与各种资源的集成来扩展 Web 服务器的功能。该服务器提供了一个运行时系统环境,您可以在其中运行应用程序代码并与其他软件组件(例如消息系统和数据库)进行交互。相较于 Web 服务器,应用程序服务器使用的业务逻辑能以更有意义的方式转换数据。

当您尝试访问网站上的交互式内容时,流程如下所示:

  1. 浏览器使用 URL 来查找服务器的 IP 地址
  2. 浏览器发送 HTTP 请求以获取信息
  3. Web 服务器将请求传输到应用程序服务器
  4. 应用程序服务器应用业务逻辑并与其他服务器和第三方系统通信以满足请求
  5. 应用程序服务器呈现一个新的 HTML 页面,并将其作为对 Web 服务器的响应返回
  6. Web 服务器将响应返回给浏览器
  7. 浏览器向您显示信息

以电子商务网站为例,当您将商品添加到购物车或结账时,您需要与应用程序服务器进行交互。

主要区别:Web 服务器与应用程序服务器

Web 服务器和应用程序服务器的几个关键差异使二者有所区别。

涵盖的任务

Web 服务器托管网站并对简单请求做出响应。Web 服务器还会记录服务器活动并允许服务器端编写脚本。

相对而言,应用程序服务器的任务集则更为复杂。应用程序服务器通过与企业系统、服务和数据库连接来处理业务逻辑以生成动态内容。

使用的协议

Web 服务器主要使用 HTTP 协议。但是,不同的 Web 服务器也支持 FTP 和简单邮件传输协议(SMTP)。这两种协议便于文件存储和传输以及电子邮件通信。

除了 Web 服务器使用的协议外,应用程序服务器还使用其他通信协议与其他软件组件进行通信。例如,可能使用远程方法调用(RMI)和远程过程调用(RPC)。

内容类型

Web 服务器主要交付静态内容。静态内容是无需服务器在交付前修改或处理的内容。例如,图像文件(如 PNG、GIF 和 JPEG)、可下载文档(PDF)、视频和 HTML 文件都是静态内容。 

应用程序服务器主要交付动态内容。动态内容是指会根据用户与之交互的方式而变化的内容。例如,动态生成的报告、自定义的数据表示、个性化用户界面、数据库结果和经过处理的 HTML 都是动态内容。

多线程

服务器上的线程是独立的操作路径,可以并行处理任务。在多线程中,服务器同时创建和运行多个线程,每个线程处理一个单独的任务或任务的一部分。对多线程的支持有助于更快地交付 Web 内容,同时管理更多 Web 流量。

大多数 Web 服务器不支持多线程。Web 服务器将每个新的连接请求放入队列中,并使用事件循环监视队列中新加入和退出的项目。为了提高效率,服务器使用非阻塞 I/O 和回调来处理请求。非阻塞操作和事件驱动型架构允许 Web 服务器处理并发连接。

应用程序服务器使用多线程来提供高可扩展性和效率。如果请求需要外部资源,则应用程序服务器将使用单独的线程来处理这些交互。该服务器可以同时处理多个线程,并行提供许多客户端交互。 

应用程序服务器和 Web 服务器如何协同工作?

应用程序服务器和 Web 服务器协同工作,以处理客户端请求并向用户提供正确的内容。Web 服务器总是会先收到新请求。如果可以自行生成信息,该服务器就会执行此操作并发回 HTTP 响应。它还会检查用户请求的数据是否尚未在其缓存中。

如果 Web 服务器无法访问用户所需的内容,则会将请求转发到应用程序服务器。应用程序服务器会处理数据并使用业务逻辑来提供正确的信息。然后,它会将请求传回 Web 服务器,Web 服务器再将其传递给用户。在某些架构中,您还可以将应用程序服务器配置为自行处理 HTTP 请求。

差异摘要:Web 服务器与应用程序服务器

 

Web 服务器

应用程序服务器

涵盖的任务

Web 服务器提供对简单请求的响应。

应用程序服务器提供来自数据库、服务和企业系统的更复杂的内容。

使用的协议

Web 服务器主要使用 HTTP,还支持 FTP 和 SMTP。

应用程序服务器支持多种协议。 

内容类型

Web 服务器交付静态内容,例如 HTML 页面、图像、视频和文件。 

应用程序服务器交付动态内容,例如实时更新、个性化信息和客户支持。

多线程

通常不使用多线程。

使用多线程同时处理请求。 

AWS 如何支持您的 Web 服务器和应用程序服务器要求?

Amazon Web Services(AWS)提供多种云 Web 托管解决方案,可提供了一种成本低廉的方式来交付 Web 应用程序和网站。有关更多信息,请阅读有关 AWS 上的 Web 托管的信息。以下是两种 AWS Web 托管解决方案:

  • Amazon Lightsail 是使用 AWS 启动和管理 Web 服务器的最简单方式。Lightsail 可满足快速启动网站的一切需求(虚拟机、基于 SSD 的存储、数据传输、DNS 管理和静态 IP),价格低廉且可预测。
  • Amazon Elastic Compute Cloud(Amazon EC2为云中的应用程序服务器提供可调整大小的计算容量。该服务旨在让开发人员能够更轻松地进行 Web 规模的云计算,还使网站和 Web 应用程序可以实现最大的可扩展性和可用性。Amazon EC2 改变了成本计算方式,您只需为实际使用的容量付费。

或者,可以采用 AWS 提供的技术来运行代码、管理数据和集成应用程序,而无需管理服务器。AWS 无服务器解决方案为您的业务提供高可用性、按使用量付费的计费模式和自动扩缩功能。有关更多信息,请转到 AWS 上的无服务器

您可以通过以下方式使用 AWS 无服务器服务:

立即创建账户,开始在 AWS 上使用 Web 服务器和应用程序服务器。