一尘

修心 暖家 济友 哄崽-专注于 移动交互设 计,J2me,Android,Iphone,WindowsMobile移动方案开发...

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  315 Posts :: 0 Stories :: 1709 Comments :: 46 Trackbacks

公告


昵称:一尘
园龄:4年
粉丝:40
关注:4

积分与排名

  • 积分 - 327314
  • 排名 - 215

最新评论

 asp.net框架

asp时代已经过去,web2.0的时代已经来临。asp.net2.0经过MS高度封装,在vs.net下的开发已经完全是傻瓜式的了,但我不愿只做个coding man

    在以往的asp时代,当请求一个*.asp文件的时候,这个请求首先被一个名为inetinfo.exe进程截获,打开任务管理器,发现inetinfo.exe其实就是www服务。Inetinfo.exe截获之后,马上把控制权交给一个名为asp.dll进程,asp.ddl就会解释和执行这个asp页面,之后把数据流返回给client浏览器,如果你是XP系统,就能在C:\WINDOWS\system32\inetsrv目录在找到该文件,此时的asp要通过解释执行,每请求一次,都要从头解释,人世间最痛苦的事,莫过如此。

既然有更新的技术,当然要使用新技术了,老使用旧技术也不能说明你用情专一,^-^

asp.net2.0时代,当clientIIS请求 *.aspx文件时,请求也同上面一样被inetinfo.exe进程截获,inetinfo.exe判断文件的后缀之后,将这个请求转交给aspnet_isapi.dll,(你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到该文件),而aspnet_isapi.dll则会通过一个名为HttpPipeLine的管道,将这个请求发送给aspnet_wp.exe进程,(你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到该文件,同时在任务管理器中也可以找到),一旦http请求进入aspnet_wp.exe进程后,asp.net framework就会通过httpRuntime来处理这个请求,然后把数据流发送回client端的浏览器。

     只喜欢和美女聊天的男人,决不是好男人。我们可以把HttpRuntime看成一位美女。既然她是美女,那当然要研究研究了。HttpRuntime到底是什么呢?她不是一个实体,而是执行asp.net的一个抽象的大环境,记住这点很重要。我们来具体看看HttpRuntime到底是怎样执行的?当http请求进入httpRuntime之后,这个请求会被继续被送入到一个名为HttpApplication Factory的工厂中,工厂为这个http请求生成一个HttpApplication的实例,随后这个实例被送到HttpModule容器中,随后http请求继续送到HttpHandler Factory工厂,

这个工厂也会生成一个HttpHandler的实例,这个实例的processRequire方法处理传进来的请求,然后把处理好的结果和控制权交给HttpModule容器,HttpModule容器再把从HttpHandler实例处理好的数据流回发到clinet端的浏览器,这样一个Http请求的完美生命周期就结束了。

记住,真正处理Http请求的地方在HttpHandler实例的processRequire方法中,而到最后回发数据流到client端的地方是HttpModule容器中。

说了这么多,感觉有点乱,画个图,把整个流程整理清楚。
 

上面是我个人的理解,有不妥之处,请多多指点。

posted on 2008-01-22 11:25 一尘 阅读(9625) 评论(40) 编辑 收藏

Feedback

#1楼2008-01-22 12:11Clark Zheng      
有点意思
 回复 引用 查看   
呃~
容器,听起来像Java中的概念
 回复 引用   
人世间最痛苦的事,莫过如此。没了,ASP在对于要求不高的小网站其实很好作为的

人世间最痛苦的事 多着,对于我更是
 回复 引用   
起点不也用asp,呵呵。
 回复 引用   
#5楼[楼主]2008-01-22 12:40wmj      
asp.net框架类似j2ee中的struts,spring等,只是不开源而已!
 回复 引用 查看   
@wmj
最近好像开源了
 回复 引用   
#7楼[楼主]2008-01-22 13:06wmj      
开源 可以套一句广告词,“他好,我也好!”,哈哈^-^
 回复 引用 查看   
#8楼2008-01-22 13:18Wilensky      
不错,受教了
 回复 引用 查看   
#9楼2008-01-22 13:19风景年华      
asp.net的框架从开始就没有变过,只不过iis变了,加了个集成模式。
这个框架的工作流程在msdn上也已经写得很明白了,在iis6和iis7上是有区别的。
 回复 引用 查看   
#10楼2008-01-22 13:25jun      
建议题目改成:asp.net处理HTTP Request的流程
 回复 引用 查看   
#11楼2008-01-22 13:33cslar      
在vs.net下的开发已经完全是傻瓜式的了..

看了这句话,我也就不再说什么了。
 回复 引用 查看   
#12楼[楼主]2008-01-22 13:40wmj      
MSDN上有没有这样的文字,我不太清楚,此文只代表我个人的看法,
如果想更进一步了解她,可以看看“asp.net深度厉险”,个人觉得
次书很有深度。
 回复 引用 查看   
#13楼[楼主]2008-01-22 13:56wmj      
我自定义一个IHttpModule接口的实现类,在application_BeginRequest方法中,我通过HttpWorkerRequest类对象的ReadEntityBody()方法截获客户端的数据流,因为数据流被我人为截获了,所以会导致asp.net不能正常RUN。
在“程序员2006”12月刊中,有篇标题为“磊客中国视频社区解决方案”说,可以同过反射重新设置HttpWorkerRequest的私有字段_contentAvailLength,_contentTotalLength,_preloadedContent,_preloaded ContentRead的值后,就能正常RUN了,我弄了很久,没有解决,请个位帮忙,能给我解决的DEMO更好!
 回复 引用 查看   
看看
 回复 引用 查看   
w3wp.exe是干啥的嗫
 回复 引用   
#16楼[楼主]2008-01-22 14:42wmj      
没有你说的w3wp.exe

只有aspnet_wp.exe进程,他是IIS6中专门用来处理ASP.NET的一个进程模块
 回复 引用 查看   
#17楼2008-01-22 15:24carysun      
@windwind
这个是sharepoint的进程啊
 回复 引用 查看   
http://msdn2.microsoft.com/en-us/library/aa531253.aspx

这里有一系列的文章讲解关于asp.net框架的东西。当初看到的时候,一看日期,我晕了:03,04年的东西了,嘿嘿。
 回复 引用 查看   
@carysun
sharepoint不过是建立在asp.net之上的站点罢了,谁告诉你aspnet_wp.exe是sharepoint独有的?
 回复 引用   
文章讲的不是asp.net框架吧 标题党?
 回复 引用   
#21楼[楼主]2008-01-22 15:55wmj      
风景年华 你如果有中文版的,可以贴出来,让大家都学习学习!
 回复 引用 查看   
这个还没有将得太明白。
还要有涉及到的更具体的细节,控件初始化,视图状态初始化,会话初始化等等。
 回复 引用 查看   
.net是系统化的,有面向对象的意义,asp效率虽好,但是比较凌乱!
不太喜欢asp,源码保护都是困难......
 回复 引用 查看   
#24楼2008-01-22 20:43m[未注册用户]
@ wfe
起点的新版已经全面转向ASP.NET了,作为一个PV过亿的网站使用ASP.NET,值得期待。。。
 回复 引用   
#25楼2008-01-22 21:28carysun      
@wfe
应该说sharepoint寄宿在W3Wp.exe中吧
 回复 引用 查看   
老贴,园子里很多人早就写过这方面的东西了。

w3wp.exe 是IIS7的。
 回复 引用 查看   
#27楼2008-01-23 10:07飞仙      
aspnet_wp.exe 好像是在 Windows XP 下的吧,
Windows 2003 是 w3wp.exe
 回复 引用 查看   
#28楼[楼主]2008-01-23 10:23wmj      
ASP.NET 辅助进程 aspnet_wp.exe 和w3wp.exe 是什么?

默认情况下,ASP.NET 进程(对于 Windows 2000 和 Windows XP 上的 IIS 5.0 和 IIS 5.1 为 aspnet_wp.exe,对于 Windows Server 2003 上的 IIS 6 为 w3wp.exe)作为 ASPNET 进程运行。
 回复 引用 查看   
#29楼2008-01-23 22:31ColdDog      
--引用--------------------------------------------------
wfe: 起点不也用asp,呵呵。
--------------------------------------------------------
起点正在改版,即将推出aspx的了
补充:不对,起点已经推出aspx的新版http://www.qidian.com/[测试版]
 回复 引用 查看   
--引用--------------------------------------------------
只喜欢和美女聊天的男人,决不是好男人
--------------------------------------------------------
嘻嘻。。。人气真高啊。加油加油!。。。孟大哥
 回复 引用   
#31楼[楼主]2008-01-28 16:41wmj      
@~
您是?
 回复 引用 查看   
#32楼2008-02-23 14:10涉江      
哥们,写的太少了.能够深入的研究呢?
我对这个主题很感兴趣,希望能够交流
 回复 引用 查看   
#33楼[楼主]2008-02-25 09:36王孟军!      
@涉江
你好!
我认为理解“页面运行环境”更加复杂点,因为“页面运行环境” 是建立在“运行时环境”之上的。

我本想写一些运行时的东东,但是害怕“老生常谈”,抽时间,我尽快补上一篇,到时候请多指教,多交流
 回复 引用 查看   
#34楼2008-04-20 20:56LanYo      
收藏,以后时间空一点就学学,win开发中......
 回复 引用 查看   
#35楼2008-06-22 11:29Fish.Mr      
看了的确又懂了很多,我想问下楼主,你这些顺序是去哪看的,买书还是有网址????
能不能推荐下
 回复 引用 查看   
支持。不过这是你个人见解,还是具体做了调试,跟踪过?
 回复 引用 查看   
#37楼2009-02-03 16:40书岳      
@cslar
何尝不是呢
 回复 引用 查看   
#38楼2010-11-08 10:17CsharpHome      
xuexi
 回复 引用 查看   
#39楼2010-11-08 10:17CsharpHome      
学习
 回复 引用 查看