简介
不管使用哪种底层平台,可靠性和性能都是对所有 Web 应用程序的主要要求,尽管从某种意义上讲,这两个要求是相互矛盾的。例如,要构建更可靠、更健壮的应用程序,可能需要将 Web 服务器与具体的应用程序分离,使应用程序在进程外工作。但是,如果在不同于 Web 服务器进程的内存环境中工作,应用程序将变慢。因此,需要采取合理的措施,以确保进程外代码尽可能快地运行。
在构建 Microsoft? ASP.NET 运行时环境时,依据的设计原则即:充分考虑可靠性和性能。得到的 ASP.NET 进程模型包含了两个系统元素 - 一个存在于 Web 服务器进程中的进程内连接器,一个外部的辅助进程。另外,ASP.NET 运行时结构的可伸缩能力很强,可以自动使用多处理器硬件中任意选定的处理器。这种模式被称为“Web Garden”,它可以使多个辅助进程同时运行,而且各个进程均在独立的处理器中。
高度概括起来,ASP.NET 运行时具有三大属性:
应用程序和 ASP.NET 辅助进程之间完全分离。提供服务的辅助进程的寿命决不会影响应用程序的寿命。换句话说,当应用程序启动并处于运行状态时,辅助进程可以随时终止。
尽管 ASP.NET 应用程序从不在 Web 服务器内采用进程内的方式运行,但大多数情况下,其总体性能仍接近于进程内应用程序的性能。
为 Web Garden 体系结构提供了内置的和可配置的支持。只要简单检查一下配置文件中的设置,辅助进程就可以克隆自己,以利用所有与进程密切相关的 CPU。因此,在大多数情况下,您在具备多处理器的计算机中获得的可缩放性将呈线性增长的趋势。(本文后面将详细介绍此内容。)
本文将介绍 ASP.NET 运行时环境的组成元素,然后一步一步地讲述从 URL 请求变为纯 HTML 文本的“漫长而曲折”的过程。
除非另有说明,否则以下介绍中均指 ASP.NET 的默认进程模型,即 Microsoft? Internet Information Services (IIS) 5.x 中唯一的模型。
ASP.NET 结构的组件
执行 ASP.NET 应用程序需要宿主 Web 服务器的支持。在 Microsoft? Windows? 的 Server 平台中,Web 服务器由名为 inetinfo.exe 的 IIS 可执行文件表示。Windows 2000 及以上版本的操作系统本身均提供了 Web 服务器。但需要注意,在 Microsoft? Windows Server™ 2003 中,并未默认安装 IIS 和 ASP.NET,必须通过单击“控制面板”中的“添加或删除程序”小程序将其添加到系统中。
IIS 是一个未托管的可执行程序,它提供了一个基于 ISAPI 扩展模块和筛选器模块的可扩展模型。通过编写此类模块,开发人员可以直接管理对特定资源类型的请求,并在各个预定义的步骤中接收当前请求。扩展和筛选器是一些 DLL,可以导出一些具有已知名称和签名的函数。这些插件组件是在 IIS 配置数据库中注册并