`
wodamazi
  • 浏览: 1427969 次
文章分类
社区版块
存档分类
最新评论

IIS架构与HTTP请求处理流程(3)

 
阅读更多

ASP.NET Web编程原理 之

IIS架构与HTTP请求处理流程(3)

续前文

8.1.4 HTTP请求的处理过程

在了解了IIS的架构之后,来看一下IIS架构中的各个组成部分是如何相互配合处理HTTP请求的。

先来从总体上看看HTTP请求的处理过程( 810)。

http请求处理过程

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1028" style="width: 415.5pt; height: 180pt;" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image001.emz"></imagedata></shape> 810 HTTP请求的处理过程

810清晰地展示出了HTTP请求处理就是浏览器与Web服务器间“一问一答”的过程

首先,浏览器尝试连接Web服务器的80端口,如果Web服务器可以响应此连接请求,就在浏览器与Web服务器间建立了一个通讯链路,在此“通道”上浏览器与Web服务器可以相互发送与接收信息。

假设浏览器向Web服务器发出一个读取某ASP.NET站点上的某个ASPX网页的请求。当此请求通过网络到达Web服务器时,此请求被HTTP.SYS组件所接收。HTTP.SYS系统组件会检查此HTTP请求的相关信息,根据其URL将此HTTP请求发送给运行在某个应用程序池中的工作者进程处理。如果同时有多个针对此ASP.NET站点的HTTP请求,HTTP.SYS会将这些请求排队,加入到对应的应用程序池的HTTP请求队列中等待。

如果这是第一个对ASP.NET站点的HTTP请求,工作者进程会加载aspnet_isapi.dll,并将请求转给它,aspnet_isapi.dll接着会装载.NET CLR[1]创建一个针对此ASP.NET站点的应用程序域[2],然后启动一个复杂的由多个步骤和组件参与的处理流程,当此处理流程结束,要发回给客户端的结果(通常是HTML代码,当然也可以是其他类型的资源,比如由程序动态生成的图片)已经生成,此结果被转发给HTTP.SYS

注意:对于以集成模式运行的IIS 7.NET CLR在应用程序池一启动就自动装载,从而避免了临时装载CLR的花销。后继处理过程与IIS 6基本一致。

HTTP.SYS接收到请求的处理结果之后,将其缓存到缓冲区中,然后把处理结果发回给发出HTTP请求的浏览器。

上述过程是对IIS处理HTTP请求全过程的粗略描述。8.2节将选取这个处理过程中的主要阶段,详细介绍针对ASP.NET网页的HTTP请求处理过程。


8.1.5 ISAPI扩展、ISAPI筛选器和程序映射

IIS的文档中经常会提到两个术语:ISAPI扩展和ISAPI筛选器。

1 ISAPI扩展

ISAPI扩展(ISAPI Extension”是一种可以添加到IIS中以增强Web服务器功能的程序,其载体为DLL文件。它通常直接负责响应HTTP请求。

根据HTTP请求要访问的资源扩展名(通过URL获取),IIS会选取特定的ISAPI扩展来处理这一请求,这一过程被称为“程序映射 而用于响应HTTP请求的这一ISAPI扩展被称为“HTTP HandlerHTTP处理程序)”。 811展示了IIS 6中的程序映射。


程序映射

<shape id="图片_x0020_8" style="visibility: visible; width: 301.5pt; height: 329.25pt;" type="#_x0000_t75" alt="IIS2" o:spid="_x0000_i1025"><imagedata o:title="IIS2" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.jpg"><font size="3" color="#000000"></font></imagedata></shape>

811 程序映射(IIS 6

811中可以看到,IIS指定对ASP.NET网页(其扩展名为.aspx)的请求将由aspnet_isapi.dll处理( 812)。

编辑映射

<shape id="图片_x0020_9" style="visibility: visible; width: 302.25pt; height: 170.25pt;" type="#_x0000_t75" alt="无标题" o:spid="_x0000_i1026"><imagedata o:title="无标题" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image003.png"><font size="3" color="#000000"></font></imagedata></shape>

812 aspnet_isapi.dll负责处理对ASP.NET网页的请求

IIS 7中的程序映射与IIS 6略有不同。当IIS 7以“经典模式”运行时,与IIS 6一样使用aspnet_isapi.dll响应针对“.aspx”的请求。但当IIS 7以“集成模式”运行时,则使用托管处理程序(System.Web.UI.PageHandlerFactory)响应针对“.aspx”的请求( 813)。



IIS7下的程序映射

<shape id="图片_x0020_4" style="visibility: visible; width: 248.25pt; height: 221.25pt;" type="#_x0000_t75" o:spid="_x0000_i1027"><imagedata o:title="" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image004.png"><font size="3" color="#000000"></font></imagedata></shape>

813 IIS 7集成模式下的程序映射

2 ISAPI筛选器

“ISAPI筛选器(ISAPI Filter也是一种DLL,但它不负责生成HTTP请求,它的主要作用是响应某些特定的事件。当这些事件发生时ISAPI筛选器被调用,它可以修改传入或传出的HTTP数据。

IIS 7中,使用“HTTP模块(HTTP Module取代了传统ISAPI筛选器的功能。

注意:ISAPI扩展与ISAPI筛选器名字很相近,但其在IIS中的地位和所起的作用是不同的。



[1] CLRComon Language Runtime):通用语言运行时,是.NET的核心,可以将其看成是一台虚拟的专用于运行.NET程序的计算机。

[2] 应用程序域(Application Domain):.NET引入的一种代码隔离机制,一个托管进程可以拥有多个应用程序域,在应用程序域中可以装载程序集,创建特定类型的对象,调用对象的方法。



*********************************************************

下一部分,将在本部分所介绍内容的基础上,详细介绍与ASP.NET开发密切相关的“ASP.NET请求处理管线(HTTP Pipe Line)”

分享到:
评论

相关推荐

    Http请求处理流程

    HTTP请求处理流程是Web开发中的核心概念,它涉及到服务器如何响应客户端(如浏览器)发起的HTTP请求。在深入了解Form验证模式和Windows验证模式之前,理解HTTP请求处理流程至关重要。这里我们将详细探讨这一流程,...

    IIS5、IIS6、IIS7的ASP.net 请求处理过程比较

    IIS5、IIS6、IIS7在处理ASP.NET请求时的工作流程有所不同,这主要体现在对请求的分发、处理以及资源管理等方面。 **IIS5的ASP.NET请求处理过程** 在IIS5中,ASP.NET请求处理的关键在于ISAPI(Internet Server ...

    IIS精典模式托管管道架构图

    总的来说,IIS经典模式托管管道架构是理解Web服务器如何处理请求和响应的重要概念,它对维护和开发基于IIS的Web应用具有指导意义。随着技术的发展,尽管新的模式和架构不断出现,但经典模式仍然是理解和学习IIS基础...

    ASP.NET构架与安全机制之Http请求处理

    ASP.NET架构与安全机制之Http请求处理涉及到Web应用程序的核心运行机制和安全性措施。在这个主题中,我们将深入探讨ASP.NET框架如何处理HTTP请求,以及在安全方面如何确保用户身份验证和授权。 首先,让我们理解...

    Windows Server 2008应用程序架构-第01部分 IIS 7.0 概览、IIS 组件、IIS 7.0 性能调优

    为了提高性能,IIS 7.0允许开发者进行内核级别的自定义开发,通过优化请求处理流程来提升服务器响应速度。此外,IIS 7.0还提供了一系列强大的诊断和纠错工具,帮助管理员监控服务器性能,定位并解决潜在问题。例如,...

    IIS6、IIS7和IIS8各版本的差别是什么?.docx

    在IIS6中,请求的处理流程如下: 1. **请求处理**:所有HTTP请求首先被HTTP.sys驱动程序捕获,然后根据Metabase(IIS的元数据库)查找请求对应的应用程序池。如果应用池不存在,IIS会自动创建。 2. **应用程序池与...

    IIS原理[归纳].pdf

    在IIS6中,请求处理流程有所不同。InetInfo.exe负责监听和分发请求到Work Process,而在IIS7及更高版本中,请求处理模型进行了重大改进,采用了更模块化的设计,允许更细粒度的控制和更高的性能。 总结来说,IIS...

    网上超市开发流程3程架构编写

    网上超市开发流程是一个涵盖多个技术层面的复杂项目,主要涉及前端用户界面设计、后端数据库管理、业务逻辑处理以及系统架构构建。以下是对这个项目的详细分析: 首先,我们需要理解网上超市的基本架构。一个完整的...

    IIS 200804091iis51.rar

    4. **HTTP管道**:IIS 7.0改进了HTTP请求处理流程,提供了更高效、可扩展的请求管道模型。 5. **FastCGI支持**:增强了对FastCGI的支持,可以更好地运行PHP等脚本语言,从而能够托管WordPress、Drupal等开源内容...

    ASP.NET架构分析(一)

    2. 如果请求的目标是一个.aspx文件,IIS会识别到这一点,并调用aspnet_isapi.dll这个ISAPI(Internet Server Application Programming Interface)扩展来处理请求,而不是直接处理.aspx文件。 3. aspnet_isapi.dll...

    IIS7开发系列课程(5):IIS 7.0可扩展性

    在这个课程中,我们将重点关注IIS 7.0如何通过模块化架构、自定义模块以及与其他微软技术的集成,来提供强大的功能扩展能力,以满足不同开发者和企业的需求。 IIS 7.0的可扩展性首先体现在其模块化设计上。与之前的...

    三层架构物流网站

    配置完成后,IIS将能够监听网络请求,接收来自客户端的HTTP请求,并将这些请求转发给网站的应用程序,最终由表现层、业务逻辑层和数据访问层协同工作,响应用户的需求。 在物流行业中,这样的三层架构网站可以高效...

    [翻译]了解ASP.NET底层架构

    运行时与IIS(Internet Information Services)紧密集成,当一个HTTP请求到达服务器时,IIS会将请求传递给ASP.NET运行时来处理。 ASP.NET运行时的工作流程大致如下: 1. **请求处理**:IIS接收到HTTP请求后,根据...

    携程旅行网在SOA架构方面的探索

    SOA架构是基于服务的架构,它可以帮助企业更好地管理和整合业务流程、系统和数据资源。携程旅行网作为国内领先的综合性旅行服务公司,面临着日益复杂的业务流程和系统架构问题。为了解决这些问题,携程旅行网进行了...

    IIS5.0超级管理手册-网页开发篇(HTM)

    3. **静态与动态内容处理**:IIS5.0不仅支持HTML等静态页面的托管,还支持ASP(Active Server Pages)等动态内容的处理。理解静态和动态内容的区别,以及如何通过IIS配置动态脚本的执行环境。 4. **ASP编程**:深入...

    java程序员通向架构师的道路

    在这个架构中,Web Server作为前端代理,负责接收来自Internet的请求,将静态内容直接返回,动态请求转发给App Server处理。App Server通过内部网络与DB Server通信,获取或更新数据。这样的设计既保证了系统的安全...

    IISl模拟软件

    3. **性能优化**:IIS具有强大的性能管理特性,例如缓存控制、请求队列、负载均衡等,这些都能帮助提高网站的响应速度和稳定性。 4. **易于管理**:IIS管理工具提供了一个直观的界面,使得设置和管理Web服务变得...

    ASP.NET运行原理.doc

    **IIS**:IIS是Windows操作系统上的一个内置Web服务器,它接收HTTP请求并处理这些请求。当一个用户通过浏览器请求一个ASP.NET应用时,IIS首先接收到这个请求。 **ISAPI**:ISAPI是一种扩展接口,允许开发者创建与...

    asp服务器(IIS)源代码

    源代码的分析和研究可以深入理解ASP页面的处理流程、HTTP协议的工作原理以及服务器如何与客户端交互。你可以从以下几个方面来探索这些源代码: 1. **HTTP服务器架构**:研究服务器如何监听并响应HTTP请求,这涉及到...

Global site tag (gtag.js) - Google Analytics