|
展对话框(如图一所示)里关闭了“确认文件是否存在”的复选框。
对于内容提供者来说,这是通用的,如:动态的图像处理,XML服务,提供虚拟的URL使原来的URL重定向,下载管理等等,这些均不能使用WebForms实现。
是否已经提供了足够的底层知识?
哎呀!我们终于绕着请求的处理周期回到了原地。尽管我在这里没有探讨有关HTTP模块和HTTP处理器如何工作的更多细节,但仍旧提供了许多对你有帮助的底层信息。挖掘这些信息花费了我很多时间,通过了解ASP.NET在底层的工作模式,使我感到非常地满足,希望它也可以给你带来同样的感受。
在结束之前,还是让我们来回顾一下,我在这篇文章中讨论的从IIS到HTTP处理器的事件序列:
l IIS得到一个请求
l 查询脚本映射扩展,然后把请求映射到aspnet_isapi.dll文件
l 代码进入工作者进程(IIS5里是aspnet_wp.exe;IIS6里是w3wp.exe)
l .NET运行时被加载
l 非托管代码调用IsapiRuntime.ProcessRequest()方法
l 每一个请求调用一个IsapiWorkerRequest
l 使用WorkerRequest调用HttpRuntime.ProcessRequest()方法
l 通过传递进来的WorkerRequest创建一个HttpContext对象
l 通过把上下文对象作为参数传递给HttpApplication.GetApplicationInstance(),然后调用该方法,从应用程序池中获取一个HttpApplication实例。
l 调用HttpApplication.Init(),启动管道事件序列,钩住模块和处理器
l 调用HttpApplicaton.ProcessRequest,开始处理请求
l 触发管道事件
l 调用HTTP处理器和ProcessRequest方法
l 把返回的数据输出到管道,触发处理请求后的事件
使用手边的例子将会更容易记住这些零碎的片断是如何组合起来的。为了记住它,我会不时地看一下它。现在应该回到工作中了,去做一些不太抽象的事情吧。
尽管讨论的这些是基于ASP.NET 1.1的。但这里描述的底层处理在ASP.NET 2.0好像并没有多大改变。
最后,非常感谢来自微软的Mike Volodarsky,是他校验了这篇文章,并且提出了一些宝贵的意见。还有Michele Leroux Bustamante,他为ASP.NET管道请求流程的幻灯片提供了依据。 上一页 [1] [2] [3] [4] [5] [6]
从底层了解ASP.NET体系结构_asp.net教程_www.it958.cn |