首页 > Web开发 > 详细

ASP.NET的请求过程(转载)

时间:2014-02-09 20:49:39      阅读:411      评论:0      收藏:0      [点我收藏+]

HTTP协议是浏览器和服务器双方共同遵循的规范.是一种基于TCP/IP(传输层协议,相对应的有UDP)的"应用层协议"  HTTP协议无状态 通过 Session Cookie 等方式来维系状态 

 

IIS 接受到请求后将 请求交给工作者进程 Worker Process: w3wp.exe 来处理请求

 

bubuko.com,布布扣

1. Worker Process 首先根据后缀找到并加载对应的ISAPI扩展 (如:aspx 对应的映射是aspnet_isapi.dll),工作者进程加载完aspnet_isapi.dll后,由aspnet_isapi.dll负责加载ASP.NET应用程序的运行环境即CLR (.NET Runtime)。Worker Process运行在非托管环境,而.NET中的对象则运行在托管环境之上(CLR),它们之间的桥梁就是ISAPI扩展。

2. ISAPIRuntime  创建一个应用程序域 通过启动 ProcessRequest  来进入ASP.NET的管道 


3. HttpRuntime 根据HttpWorkerRequest对象生成HttpContext,HttpContext包含request、response等属性(到这里就是运行到CLR中) 

 

4. HttAppliation HttpRuntime 调用HttpAppliationFactory 来创建 HttpAppliation 他是一个IHttpHander的实现 如果项目中存在global.asax 就更加global来创建HttpAppliation对象如果不存在者默认创建 HttpApplication代表着程序员创建的Web应用程序。HttpApplication创建针对此Http请求的 HttpContext对象,这些对象包含了关于此请求的诸多其他对象,主要是HttpRequest、HttpResponse、HttpSessionState等。这些对象在程序中可以通过Page类或者Context类进行访问。

 

5. HttpModule  当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。

 

6. HttpHandler IHttpHandler定义了如果要实现一个HTTP请求的处理所必需实现的一些系统约定。HttpHandlerHttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。当一个HTTP请求经同HttpModule容器传递到HttpHandler容器中时,ASP.NET Framework会调用HttpHandlerProcessRequest成员方法来对这个HTTP请求进行真正的处理。以一个ASPX页面为例,正是在这里一个ASPX页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。

ASP.NET的请求过程(转载)

原文:http://www.cnblogs.com/eeqg/p/3541771.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!