• ASP运行流程(主要的类笔记)


    个人笔记:参考汤姆大叔的MVC之前那些事系列整理  281209034001544

    client端发送页面请求,被IIS的某个进程截获,它根据申请的页面后缀(.aspx)不同,调用不同的页面处理程序(.asp->asp.dll; .aspx->ISAPI.dll).当asp应用程序进入CLR时,

    框架会加载一个重要的类AppManagerAppDomainFactory。

    在默认构造函数中,得到了ApplicationMananger对象。

    而且这个类继承了IAppManagerAppDomainFactory,这个接口有个重要的方法Create。

    在这个方法中调用ApplicationMananger对象的CreateObjectInternal方法,用于得到ISAPIRuntime实例对象

    而且在这个过程中会创建AppDomain  HostingEnvironment(ISAPIRuntime是通过该对象创建的)等对象。

    此时已经得到ISAPIRuntime对象了,此时开始调用ISPAIRuntime的ProcessRequest方法

    在这个方法中,会调用开始调用HttpRuntime.ProcessRequestNoDemand(wr)

    至此正式进入了HttpRuntime的世界了着这个阶段会创建HttpContex,HtpRequest,HttpResponse等重要的类对象。

    在ISAPIRuntime里面还有一句重要的代码

    IHttpHandler app = HttpApplicationFactory.GetApplicationInstance(context);

    没错,就是得到HttpAppplication对象。

    通过HttpApplicationFactory的GetApplicationInstance静态方法

    获取我们熟悉的HttpApplication对象实例。

    至此,HttpRuntime已经正式发挥其无可替代的作用了,也正式通过此对象正式进入了HttpApplication对象的创建以及大家熟知的HttpApplication以后的生命周期了。

    当然GetApplicationInstance静态方法并不是单单得到了一个HttpApplication对象这么简单。

    在此过程中,会创建我们的Pipeline(管道)对象(包括读取配置文件、实例化管道对象)

    这个过程主要做了重要的几件事情

    1根据Web.Config的设置,加载相应的HttpModules。

    2会加载IIS7集成模式下在服务器上设定的HttpModuels和Web.config里system.webserver下的

    3根据发生的事件,调用HttpApplication实例中相应的事件处理函数

    4创建很多实现IExecutionStep接口的类的实例并添加到当前HttpApplication实例的_execSteps中,等待回调时执行。从这里我们可以看到HttpApplication是以异步的方式处理请求, 对请求的很多处理工作都放入了_execStep等待回调时执行

  • 相关阅读:
    碰到了一个GDI+的问题,郁闷ing。。。
    (旧文重贴)对于以前遇到过的ws proxy实例化时间太长的问题,看JNDI受到了些启发
    (旧文重贴)下午又看了MBF的介绍,靠,心丧如死!
    (旧文重贴)前段时间关于SmartClient部署的两个问题,都搞定了。
    (旧文重贴)编程高手箴言读书笔记(1)
    SAP MDM 学习网址
    常用Oralce sql
    WE02 修改IDOC
    OBD/IBD 的拣配数量更新
    配置ALE仓库管理
  • 原文地址:https://www.cnblogs.com/ljp-sun/p/4526205.html
Copyright © 2020-2023  润新知