首页
软件分类
最近更新
下载推荐
下载排行
网络学院
文章发布
设为首页
加入收藏
英文版
源码
资讯
注册
登录
退出
当前位置:
源码网
→
网络学院
→
网络编程
→
JSP教程
→ ASP.NET 2.0运行时简要分析(1)
特别推荐
热点TOP10
本周下载排行
·
卡巴斯基V8.0.0.99 Bet..
·
Photoshop 7.01 简体中..
·
Poco 2005冰激凌版
·
Photoshop CS v8.01 简..
·
南通棋牌游戏源码 2006..
·
zinemaker2006电子杂志..
·
九天自助建站系统 6.8S..
·
上游棋牌游戏源码 改进..
·
大型网络棋牌游戏系统全..
·
E话通
本月下载排行
·
卡巴斯基V8.0.0.99 Bet..
·
Photoshop 7.01 简体中..
·
zinemaker2006电子杂志..
·
南通棋牌游戏源码 2006..
·
查路宝-网站内嵌式电子..
·
大型网络棋牌游戏系统全..
·
上游棋牌游戏源码 改进..
·
Poco 2005冰激凌版
·
九天自助建站系统 6.8S..
·
益友大型视频棋牌游戏 ..
ASP.NET 2.0运行时简要分析(1)
日期:2006年2月26日 作者: 人气:
查看:
[
大字体
中字体
小字体
]
概述:
本文基于ASP.net 2.0的源代码,对ASP.NET 2.0运行时进行了简要的分析,希望能帮助你理解ASP.NET 2.0中请求处理过程及页面编译模型。
关键字:
ASP.NET 2.0运行时,原理,请求处理,页面编译,ASP.NET 2.0 HTTP Runtime
主要类:
System.Web.HttpRuntime
System.Web.HttpApplicationFactory
System.Web.HttpApplication
System.Web.Compilation.BuildManager
System.Web.Compilation.ApplicationBuildProvider
System.Web.Compilation.BuildProvidersCompiler
System.Web.UI.PageHandlerFactory
请求处理简要流程图:
阅读建议:
用Reflector工具边查看ASP.NET 2.0的源代码边阅读。
分析:
当我们通过浏览器向ASP.NET 2.0网站的一个asp.net页面发起请求时,在服务器端首先是IIS收到请求,IIS一看是asp.net页面,心里很开心,因为这个请求不用它处理,交给ASP.NET ISAPI就行了。ASP.NET ISAPI的工作也比较轻松,他的主要任务就是安排aspnet_wp.exe处理请求,并监视aspnet_wp.exe进程的执行情况,如果 aspnet_wp.exe进程太累了,不能出色地完成任务,ASP.NET ISAPI就要让他下岗,换一个新的aspnet_wp.exe来处理工作。
aspnet_wp.exe的主要任务是将请求交给一系列称为的 HTTP 管道的托管对象。如果把ASP.NET ISAPI比做销售经理,那aspnet_wp.exe就是生产经理,而HTTP 管道就是生产的流水线。负责流水线的小组就是HttpRuntime,生产经理aspnet_wp.exe会将订单(HTTP请求)交给 HttpRuntime小组的工作人员ProcessRequest(HttpWorkerRequest wr),HttpRuntime根据内部的分工,最终由ProcessRequestInternal(HttpWorkerRequest wr)在流水线上进行生产,所以ProcessRequestInternal(HttpWorkerRequest wr)是我们分析的重点。
ProcessRequestInternal的主要工作是:
1. 创建HttpContext实例。
2. 对第一次请求进行初始化(EnsureFirstRequestInit)。
a) 在EnsureFirstRequestInit中通过调用System.Web.HttpRuntime.FirstRequestInit进行一些初始化工作,比如:将Web.Config配置读到到RuntimeConfig中,从bin目录中装载所有dll文件。
3. 创建HttpWriter实例。
4. 通过调用HttpApplicationFactory.GetApplicationInstance创建HttpApplication实例。
在HttpApplicationFactory.GetApplicationInstance中有三个关键方法:
HttpApplicationFactory._theApplicationFactory.EnsureInited();
HttpApplicationFactory._theApplicationFactory.EnsureAppStartCalled(context);
HttpApplicationFactory._theApplicationFactory.GetNormalApplicationInstance(context);
下面我们对这三个方法逐个进行分析:
1) HttpApplicationFactory._theApplicationFactory.EnsureInited();
该方法检查HttpApplicationFactory是否被初始化,如果没有,就通过HttpApplicationFactory.Init()进行初始化。
在Init()中,先获取global.asax文件的完整路径,然后调用CompileApplication()对global.asax进行编译。
那编译是如何进行的呢?
(出处:源码网)
百度搜索
Google搜索
雅虎搜索
我要投稿
相关文章:
相关软件:
·
ASP.NET应用程序规划与设计(1)
·
ASP.NET应用程序规划与设计(2)
·
ASP.NET应用程序规划与设计(3)
·
ASP.NET应用程序规划与设计(4)
·
ASP.NET讲座(1)-ASP.NET简介
·
ASP.NET讲座(2)-ASP.NET控件
·
ASP.NET讲座(3)-输入验证控件
·
ASP.NET讲座(4)-数据绑定DataBind
·
ASP.NET讲座(5)-数据库的操作ADO.NET
·
ASP.NET讲座(6)-ASP.NET的几种主要文件
·
Asp.Net Forums v2.0.1 中文官方圣诞版
·
中科主机系统ASP.NET版 v0.2
·
asp.net网络购物系统 V2.0
·
随风ASP.NET水印文字生成控件 v1.0
·
ASP.NET(C#)新手留言本
·
ASP.NET程序设计教程
·
asp.net专家200问
·
拓文asp.net网站内容管理系统 v3.0
·
ASP.NET2.0+AjaxPro留言本
·
微软asp.net树形菜单控件中文版
网站地图
友情连接
广告联系
Copyright © 2003-2005
downcodes.com
互联网信息服务备案编号:
冀ICP备05003145号