_第三章_asp.net 页面剖析
来源:互联网 发布:网络语言凸是什么意思 编辑:程序博客网 时间:2024/04/30 12:40
dp83.
解释管道.管道中有很多个步骤,就像一条流水线一样,中间有很多道工序.
页面请求会传递给管道中的每一个处理原始 HTTP 有效负载的对象,在该链路的终端生成要发给浏览器的标识代码(HTML).
而 HttpRuntime 就是这个管道的入口点.
1. 初始化
asp.net 的工作线程首先会创建一个 HttpRuntime 的实例,并调用其 ProcessRequest() 来激活该 HTTP 管道.
HttpRuntime 公开了三个静态的方法:
ProcessRequest,Close,UnloadAppDomain.
其中只有 UnloadAppDomain 可以考虑手工调用,用来实现对应用程序的重启.其它两个不需要手工调用.也不应该手工调用.
有一个辅助处理页面请求的对象,如:缓存管理器,文件系统监视器.也是由 HttpRuntime 来进行初始化的.
HttpRuntime 会创建新的上下文 HttpContext 的实例.并初始化一个特别的文本编写器(writer)对象.该对象用于存缓HTML标识代码.
2. HTTPRuntime 会查到用于处理该请求的 web 应用程序.查找或新建Web 应用程序的对象叫作: HttpApplicationFactory, 它是一个内部调用的对象,用于返回能够处理该请求的有效对象.
HttpApplicationFactory 维护着许多HttpApplication 对象.当被调用时它会验证请求的目标虚拟文件夹是否存在,如果应用程序已经运行,该工厂则从可用的对象池中获取一个 HttpApplication 对象,然后将它传给请求,否则请创建一个 HttpApplication 新实例.
一个 虚拟文件夹是否对应一个 HttpApplication 对象?????
如果 global.asax 存在,则创建 HttpApplication 时,就需要对它进行编译,并创建代码实际被请求页面的程序集.该过程相当于重启应用程序,(那如果 global.asax 不存在呢?)
HttpApplication 对象:
如果 global.asax 文件存在,则根据它动态生成应用程序类的源代码,并命名为 ASP.global_asax ,否则则使用其基类:HttpApplication.
一个 HttpApplication 对象负责一个请求的整个生命周期,只有该请求处理完毕,这个HttpApplication 对象才有可能被重用.
HttpApplication 对象维护着一系统的 HTTP 模块对象,这些对象可以对请求的内容进行筛选,甚至还可以进行修改.在请求穿越管道的过程中,可能随时会调用已注册的模块.
HttpApplication 通过判断被请求资源的类型,(如:页面, web 服务, 用户控件).使用相应在的处理程序工厂获取被请求资源的对象.处理程序工厂是实现了 IHttpHandlerFactory 接口的类的实例,(如:PageHandlerFactory,WebServicehandlerFactory)
负责返回处理 HTTP 请求的托管对象---http处理程序.处理程序是实现了 IHttpHandler 接口的类的实例.
页面工厂:(待续)
- _第三章_asp.net 页面剖析
- ASP.NET页面剖析(1)
- 详细剖析asp.Net自定义404页面
- [深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白
- ASP.NET重定向_第三篇_调用 ASP.NET 网页的方式
- ASP.NET Repeater_第三篇_分页01-04
- 剖析ASP.NET下部构造
- 剖析ASP.NET三层构架
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASp.net 剖析三层架构
- ASP.NET 剖析三层架构
- ASp.net 剖析三层架构
- 字符串模式匹配算法
- 在XML中,有5个预定义的实体引用
- 让Ext.grid.GridPanel某行变色
- 用Vim搭建C/C++开发环境
- QtWebKit简介
- _第三章_asp.net 页面剖析
- 我当研究生这一个月来的感悟
- taglist安装与应用
- 程序员30岁以后的发展迷途
- Linux/MIPS核心剖析
- Ajax的学习与使用
- 用VC6调试器源码级调试win32汇编程序
- fedora10中安装mplayer
- 怎样在C#里对xml文件进行修改,新增,删除,插入操作?