下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → ASP.NET HTTP运行时组成详解__教程
ASP.NET HTTP运行时组成详解__教程
日期:2007-5-20 1:18:19 人气:112     [ ]
上一页 [1] [2] [3] [4] [5] 下一页
 简介

不管使用哪种底层平台,可靠性和性能都是对所有 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 配置数据库中注册并配置的。
 
  只有少数几种被客户端请求的资源类型由 IIS 直接处理。例如,对 HTML 页面、文本文件、JPEG 和 GIF 图像的传入请求由 IIS 处理。对 Active Server Page (*.asp) 文件的请求通过调用名为 asp.dll 的 ASP 专用扩展模块进行解析。同样,对 ASP.NET 资源(例如,*.aspx、*.asmx、*.ashx)的请求将传递到 ASP.NET ISAPI 扩展。该系统组件是一个名为 aspnet_isapi.dll 的 Win32 DLL。ASP.NET 扩展可以处理多种资源类型,包括 Web 服务和 HTTP 处理程序调用。

  ASP.NET ISAPI 扩展是一个 Win32 DLL,未集成托管代码。它是接收和分派对各种 ASP.NET 资源的请求的控制中心。按照设计,该模块存在于 IIS 进程中,在具有管理员权限的 SYSTEM 帐户下运行。开发人员和系统管理员不能修改此帐户。ASP.NET ISAPI 扩展负责调用 ASP.NET 辅助进程 (aspnet_wp.exe),而该进程又负责控制请求的执行。除了对请求进行安排以外,ASP.NET ISAPI 还监视辅助进程的运行情况,并在性能降低到一定程度时将进程取消。

  辅助进程是一小段 Win32 shell 代码,集成了公共语言运行库 (CLR) 并运行托管代码。它负责处理对 ASPX、ASMX 和 ASHX 资源的请求。一般来说,此进程在一台给定的计算机中只有一个实例。所有当前激活的 ASP.NET 应用程序均在其中运行,每个应用程序都位于一个独立的 AppDomain 中。但是,如前所述,辅助进程支持 Web Garden 模式,即进程的相同副本都运行在与进程密切相关的 CPU 中。(更多内容,请参阅本文后面的“Web Garden 模型”部分。)

  ISAPI 和辅助进程之间的通讯是使用一组命名管道进行的。命名管道是一种 Win32 机制,用于跨进程边界传输数据。顾名思义,命名管道的工作方式与管道相似:在一端输入数据,在另一端输出相同的数据。建立的管道既可以连接本地进程,也可以连接远程计算机上运行的进程。对于本地进程间通讯,管道是 Windows 中的最有效、最灵活的工具。

  为确保获得最优性能,aspnet_isapi 使用异步命名管道来将请求转发给辅助进程并获得响应。另一方面,辅助进程在需要查询有关 IIS 环境的信息(即服务器变量)时又使用同步管道。aspnet_isapi 模块创建固定数量的命名管道,并使用重叠的操作以通过小的线程池处理同一时间进行的连接。当通过管道进行的数据交换操作结束后,完成例程将断开客户端,并重新使用管道实例为新的客户端服务。线程池和重叠操作均可以保证使 ASP.NET ISAPI 的性能达到令人满意的水平。但是,aspnet_isapi 扩展决不会处理 HTTP 请求。

  ASP.NET 请求的处理逻辑可以概括为以下步骤:

  当请求到达时,IIS 检查资源类型并调用 ASP.NET ISAPI 扩展。如果启用了默认的进程模型,aspnet_isapi 会将请求排队,并将请求分配给辅助进程。所有的请求数据都通过异步 I/O 发送。如果启用了 IIS 6 进程模型,请求将自动在辅助进程 (w3wp.exe) 中排队,此辅助进程用于处理应用程序所属的 IIS 应用程序池。IIS 6 辅助进程不了解 ASP.NET 和托管代码的任何情况,它只是处理 *.aspx 扩展并加载 aspnet_isapi 模块。当 ASP.NET ISAPI 在 IIS 6 进程模型中运行时,它的工作方式有所不同,仅在 w3wp.exe 辅助进程的上下文中加载 CLR。
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.