加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 发布搜索
背景:
阅读内容 

图解DotNet框架之八:ASP.NET

[日期:2008-08-01] 作者: 来源:博客园 [字体: ] 收藏到QQ书签
     (声明:本系列只想给大家介绍.net框架,并不是语法和类的使用的讲解,所以只能概括的描述一下所提到的类,如果有疑问可以到MSDN上面去查)
  
  
  
   当服务器ASP.NET)接收到一个 Http请求的时候,他会如何工作呢?
  
  
  
  还是老思路,我们先来看图:
  
  
  这个图和上一篇中的图,基本上是一样的(为了便于学习和记忆,我将一些不太重要的东西去掉了).
  
  那么我们现在来分析一下ASP.NET的运行过程吧。
  
  
  
  
  
  首先从第一个方块说起:启动IIS进程,对于IIS来说,它依赖一个叫做 HTTP.SYS 的内置驱动程序来监听来自外部的 HTTP请求。在操作系统启动的时候,IIS首先在HTTP.SYS中注册自己的虚拟路径。实际上相当于告诉HTTP.SYS哪些URL是可以访问的,哪些是不可以访问的。
  
  
  第二个方块:在CLR挑选好了要加载Mscorewk.dll还是Mscorsvr.dll以后,就要加载MScorlib.dll和对应的工作者进程(如果请求的是一个可访问的URL),HTTP.SYS会将这个请求交给 IIS 工作者进程。IIS6.0是w3wq.exe,IIS5.0是aspnet_wp.exe,每个工作者进程都有一个身份标识.
  
  
  
  第三个方块:编译好机器码以后,就可以执行指令了,这里会创建Systemdomain,它包含了SharedDomain和默认的应用程序域,也就是当前应用程序自己的域,前面我们说过一个.net进程中可以包含多个默认的应用程序域,而这些应用程序域都会用到mscorlib.dll,如果每个默认的应用程序域中都去加载它,那么无疑会造成内存的浪费,所以就有了SharedDomain,它是用来放所有Domain都要用到的Dll,这样就避免了浪费内存.也优化了加载的速度.
  
  
  
  第四个方块:这时候默认的应用程序域,就会去找到Aspnet_wp.exe中的Main方法.
  
  
  
  OK明白了ASP.NET的启动过程,我们来看看AppDomain都做了什么,还是来看图:
  
  
  1. HttpRuntime将Http请求转交给 HttpApplicationFactory,由他将Global.asax与编译好的Webapplication.dll中的Global.aszx.cs编译生成HttpApplication,HttpApplication代表着我们创建的Web应用程序。HttpApplication创建针对此Http请求的 HttpContext对象,这个对象包含了关于此请求的诸多其他对象,主要是HttpRequest、HttpResponse、HttpSessionState等。这些对象在程序中可以通过Page类或者Context类进行访问。
   
  2. HttpApplication根据Web.config加载一系列Module,如sessionstate Module 就可以拦截Application_BeginRequest来处理Session.并且HttpApplication会获得Httphandler,并且编译请求的aspx页面.
  
  
  3. Http请求经过所有的Module之后,它会被HttpHandler处理。,通常也就是.aspx.cs文件所完成的逻辑。我们知道.aspx 页面继承自Page类,Page类实现了IHttpHandler接口,HttpHandler也是Http请求处理的最底层。
  
  4.HttpHandler处理完以后,Http请求再一次回到Module,此时Module可以做一些某个工作已经完成了之后的事情。Asp.Net 中有众多的 XXing 、XXed 之类成对的事件,这里就是为什么Asp.Net可以将一个XX操作分成前后两部分,然后再分别进行事件拦截的幕后原理。
  
  
  下面我们来看看构建一个ASP.NET应用程序最常用的类的层次结构.
  
  
  
    
收藏 推荐 打印 阅读:
相关文章      
本文评论   查看全部评论 (3)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 3 楼
blue1000会员 发表于 2008-10-13 16:25:01
你好,已经加上原创连接,感谢支持。
第 2 楼
唔,做人要厚道! 发表于 2008-8-6 20:54:27
做人要厚道哦!
第 1 楼
博客园团队 发表于 2008-8-6 18:43:40
转载博客园的文章,请注明原文地址!