ASP.NET应用程序生命周期趣谈(一)
这几天一直在看ASP.NET应用程序生命周期,真是太难了,我理解起来费了劲了,但偏偏它又是那么重 要,所以我希望能给大家带来一篇容易理解又好用的文章来帮助学习ASP.NET应用程序生命周期。这篇就 是了。 当你访问博客园想看我的这篇文章的时候,这个请求就被博客园的WEB SERVER(IIS)接收到了。博客 园IIS看了一眼我的请求,“噢,是.aspx啊,给ASP.NET去处理吧,就把我这个请求给了ASP.NET,并且说 :“这个你来处理,你处理完了之后把HTML给我,我好给邱爽一个回复”。 ASP.NET收到IIS传递过来的请求后也没时间抱怨啊 就开始干活儿了。怎么干的呢? 第一,它先创建了一个Context对象,它就像个箱子,箱子当然是来装东西的啦,装什么呢? 第二,ASP.NET创建了一个Request对象,包含了IIS传递给它的所有信息(IIS传递过来的实际就是个 Request嘛)。 第三,ASP.NET接着又创建了一个Response对象,用来装HTML的,也放进箱子(Context) 第四,然后,ASP.NET说,太累了,这活儿没个干,还是雇个人吧。就雇了个项目经理 (HttpApplication对象),然后就把箱子(Context)交给项目经理并且对它说,这里有我们收到的 Request,你需要做的就是把里面的Reponse填一下,具体怎么干你掂量着吧,就走了。 这个项目经理(HttpApplication对象)就想啊,凭啥活儿我干钱你们拿啊?不行,我得找俩苦力去, 于是就有了:程序员HttpModule和程序员HttpHandler,姑且就称他们为P_Module和 P_Handler吧,项目 经理先找到了P_Module. P_Module(HttpModule)非常的能干,它能够去查看 ASP.NET交给项目经理(HttpApplication对象)的 箱子(Context),并且根据里面的东西做一些决定,比如安全啊(FormsAuthenticationModule),状态啊 (SessionStateModule )等等吧。在P_Module工作完成之后(也许已经改变了箱子里(Context)的内 容),项目经理开始找P_Handler来做填充Response的工作。现在招人难啊,找了好久也没招到,好吧, 找猎头(HttpHandler Factory)吧。猎头公司一看,“噢,要.aspx Handler啊",于是找来了一个天生就 善于并且愿意处理页面的P_Handler(.aspx页面最终会编译成一个有继承机构的 IHttpHander),然后交 给项目经理(HttpApplication)。项目经理看了一眼P_Handler之后,觉得还行,就把 P_Module处理过 的箱子交给它并且说:"处理一下这个箱子里的东西,然后交给我"。 P_Handler是个天生的处理页面的牛人,它根据Request 对象里的东西是用了一招"乾坤大挪移",不知 道怎么挪的,就挪出了HTML并塞进了Response对象中。P_Handler自信的笑了一声,把箱子交还给了项目 经理(HttpApplication对象)。项目经理从箱子里面把Response对象拿出来直接给了IIS,IIS又给了你 了,你就看到这篇文章了。 故事就是故事,故事就是故去的事,就是往事。那往事肯定就有遗漏的地方。那我们这个故事遗漏了 哪些地方呢? 第一,IIS和ASP.NET之间的交互不是像我说的那么简单而直接的,中间还发生了很多事情。 第二,HttpModule,也就是我们的程序员P_Module, 它其实还能干很多事情,我们并没有去发掘。 第三,HttpHandler,也就是我们的程序员P_Handler,它的"乾坤大挪移"就是ProcessRequest方法, 这里并没有详述到。 第四,。。。等我再想想再跟您聊。 希望这边小文能够帮助你更容易的理解ASP.NET生命周期,我会继续努力,争取以最简单明了的方式来 speak out ASP.NET原理和运行机制。欢迎拍砖,谢谢。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |