Web 服务器是如何被应用服务器“收编”的?

服务器
Web 服务器的基本功能就是提供 Web 信息浏览服务。它支持 HTTP 协议、HTML 文档格式及 URL,专门处理 HTTP 请求(request),可与客户侧的网络浏览器配合。它所提供的是一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境。

 在传统 Web 应用的多层架构中

系统一般会包括有负载均衡器 

Web 服务器、应用服务器等多个后端服务

其中,Web 服务器和应用服务器

常常被人视为一个整体

但其实从工作原理上来说

两者还是有一定区分的

Web Server

Web 服务器的基本功能就是提供 Web 信息浏览服务。它支持 HTTP 协议、HTML 文档格式及 URL,专门处理 HTTP 请求(request),可与客户侧的网络浏览器配合。它所提供的是一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境。

[[223101]]

Web 服务器在 web 页面处理上的步骤如下:

1. Web 浏览器向一个特定的服务器发出 Web 页面请求;

2. Web 服务器接收到 web 页面请求后,会把请求发至应用服务器处,传递给处理请求的程序,以寻找所请求的 web 页面;

3. Web 服务器从应用服务器处接收到所请求的 web 页面内容,并将结果返回给客户侧的 Web 浏览器,由其显示出来。

The Application Server

应用程序服务器(简称应用服务器)的职能则是让多个用户可以同时使用应用程序。它提供的是客户端应用程序可以调用(call)的方法(methods),并通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。

如果说 Web 服务器主要是处理向浏览器发送 HTML 以供浏览,那应用服务器就是提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象调用对象的一个方法 (或过程语言中的一个函数)。比如在用户中心、结算中心、支付中心中所涉及到的导航、存储数据、安全认证、控制流程,都需要靠应用服务器来响应。

在过去,两者之间的功能区别较为明显

而如今在大多数情况下

人们习惯于把 Web 服务器归类为

应用服务器的子集

因为随着各自功能项的不断添加

它们之间的界线早已变得模糊

我们知道,web 页面内容有静态的,也有动态的。静态的内容,Web 服务器可以直接将结果发回给浏览器,对于动态内容,则通常需要交给应用服务器先处理,由应用服务器返回结果。早期由于受 HTTP 1.0 协议的局限,web 服务所提供的页面内容和图片服务大多是静态的。后来随着CGI功能的添加,意味着可以为每个 web 请求启动一个进程来产生动态内容。例如.NET中最常用的 Web 服务器是IIS,因为IIS 就可以自已解释处理 ASP、ASP.NET 这两种微软的动态网页脚本语言。

虽然 Web 服务器不支持事务处理或数据库连接池,但现在由于 HTTP 协议愈发成熟,使得 Web 服务器也变得更加复杂,拥有了像缓存、安全和 session 管理这些附加功能,它可以处理更高的负载、更多的并发,并通过传送 XML 有效载荷(payload)给服务器,让自己具备处理数据和响应(response)的能力(前提是不需要应用服务器来处理相关逻辑)。

就象 Web 服务器一样,应用服务器配置了多种容错(fault tolerance)和可扩展(scalability)技术,并且传统的应用服务器也开始逐渐嵌入 HTTP 通信等原本属于 Web 服务器的功能。现在大多数应用程序服务器内其实已经包含了 Web 服务器,这就意味着可以把 Web 服务器当作是应用程序服务器的一个子集(subset)。不过在一些复杂网站的架构中,我们还是会建议将两者进行独立配置。毕竟,部分功能的必要分离有助于提高系统的整体性能,并给维护和升级留下余地。

责任编辑:武晓燕 来源: 研发云
相关推荐

2012-02-23 10:02:08

Web服务器应用服务器

2009-01-16 14:37:57

TomcatWeb服务器应用服务器

2009-01-10 19:32:36

2017-10-17 09:15:06

Web服务器区别

2019-04-24 15:13:16

Web服务器应用服务器Web容器

2009-02-27 14:25:00

Weblogic应用服务器服务器管理

2018-12-12 08:40:11

服务器TomcatJava

2017-09-20 10:22:15

Web服务器容器

2009-06-16 15:35:20

JBoss应用服务器

2012-02-02 10:24:08

JavaResin

2021-05-28 05:18:08

PHP语言roadrunnner

2018-12-17 10:13:10

Kubernetes应用服务器

2009-06-18 10:03:57

EquinoxOSGi应用服务器

2014-08-08 16:35:37

应用服务器

2018-02-07 10:08:02

应用服务器网络数据库

2012-03-23 09:32:48

应用服务器

2018-05-24 10:15:18

服务器Session问题

2011-11-18 13:14:37

JavaWebWebServices

2009-06-16 12:02:37

JBoss IPv6
点赞
收藏

51CTO技术栈公众号