剖析aspx请求的处理过程

1、客户在浏览器中输入login.aspx
2、把信息(info)提交到IIs
3、IIS初始化ASPNET_ISAPI.DLL并把info传给ASPnet_ISAPI的实例
4、ASPNET_ISAPI实例启动一个Asp.net工作进程(ASPNET_WP.exe),并把info传给aspnet_wp.exe
5、aspnet_wp.exe创建一个APPDOMAIN(.net程序的执行环境),并加载所需要的Assembly到APPDOMAIN中
   同时创建ISAPIRuntime(负责解析出info信息然后传给IHttpRuntime对象)和IHttpRuntime对象
6、HTTPRuntime对象为每个请求者创建一个httpcontent(负责管理httpSession)、httpSession、httpApplication对象
7、httpApplication对象根据<machine.config>的<httphandler>节找到真正的处理请求的对象
   Login类
8、httpruntime调用Login的ProcessRequest()方法
伪代码如下:
 /// <summary>
 /// 模拟asp.net的处理过程,以下代码全部是根据自己的理解写的
 /// 帮助理解处理aspx请求的生命周期的伪代码,没有任何依据,给读者
 /// 造成的误导不负任何责任
 /// </summary>
 public class HttpRuntime
 {
  public HttpRuntime(string info)
  {
   HttpContent content=new HttpContent();//每一个请求一个HttpContent
   content.Session=new HttpSession();//HttpContent负责管理HttpSession

   HttpApplication app=new HttpApplication();
   HttpHandler handler=app.GetHandler(info);
   //负责根据请求的Info找到真正的处理请求的HttpHandler类,在.net中所有的
   //Web窗体都是从Page继承,page继承了HttpHandler接口

   handler.ProcessRequest();//真正的HttpHandler处理请求
  }
 }

 public class HttpContent
 {
  public HttpSession Session;
  public HttpContent()
  {
  }
 }
 public class HttpSession
 {
  public HttpSession()
  {
  }
 }

 public class HttpApplication
 {
  public HttpApplication()
  {
  }
  public HttpHandler GetHandler(string classname)
  {
   //根据动态特指等方法得到真实的HttpHandler的子类
   return null;
  }
 }


 public interface HttpHandler
 {
  void ProcessRequest();
 }

 public class Login:HttpHandler 
 {
  public Login()
  {
  }

  // HttpHandler 成员
  public void ProcessRequest()
  {
   // TODO:  添加 Login.ProcessRequest 实现
   OnInit();
   LoadViewState();
   OnLoad();
   OnPreRender();
   SaveViewState();
   Render();
   OnUnload();
   Dispose();
  }
  public void OnInit()
  {
  }
  public void LoadViewState()
  {
  }
  public void OnLoad()
  {
  }
  public void OnPreRender()
  {
  }
  public void SaveViewState()
  {
  }
  public void Render()
  {
  }
  public void OnUnload()
  {
  }
  public void Dispose()
  {
  }
 }

转载于:https://www.cnblogs.com/kuailewangzi1212/archive/2007/07/04/805691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值