【ASP.NET】管道模型

众所周知,我们在使用ASP.NET创建web项目时,会选择ASP.NET WebForm,或ASP.NET MVC 。而他们都是基于ASP.Net 管道模型的,换句话说,管道模型是整个asp.net的核心。如下图所示:

                                                           【ASP.NET】管道模型_第1张图片

一、管道对象模型

       在System.Web的命名空间中处理HTTP请求主要使用管道模型。管道模型如下图所示。在管道模型开始运行前,首先HTTP的请求被传到HttpRuntime类的一个实例中,然后这个实例对象检查请求并找到被接受的那个应用程序。接下来,管道模型就使用HttpApplicationFactory对象来创建一个HttpApplication对象来处理这个请求,一个HttpApplication可以包含一系列HTTP module对象。其中最重要的就是HttpModule和HttpHandler。

                         【ASP.NET】管道模型_第2张图片

          HttpModule,可以看做是一个拦截器,给我们在特定的事件处理请求的机会。HttpModule有很多应用,例如,我们要在每个请求的页面事件前加载Session数据,那么就用到SessionModule等等;asp.net4.0提供了路由机制也是建立在一个UrlRouteModule上面的,它在请求映射到具体程序前拦截,然后重新映射。MVC又是建立在路由机制的基础上的。

          HttpHandler,可以看做一个处理器,它负责处理请求,输出数据。aspx,ashx或者说实现了IHttpHandler的都是HttpHandler。

          管道模型使用一个HttpContext对象去描述声明request/response信息。这个对象在HttpApplication和handler之间来回传递。HttpContext对象通过属性来描述request和response信息。下图展示了部分HttpContext类常用的属性。

                                                                                  【ASP.NET】管道模型_第3张图片

二、19个标准事件


【ASP.NET】管道模型_第4张图片

三、总结

       MVC URLRouting Module对进入server的request进行了拦截,然后对request的handlerjinxingltes的处理。asp.net WebForm和asp.net MVC两者的不同,是在于最终使用的IHttpHandle的不同。WebForm中使用的是Page这个Handler,MVC中使用的是MVCHander。

        关于这一块的知识,还有很多不懂得地方,欢迎大神前来指教~~~



你可能感兴趣的:(【ASP.NET】管道模型)