Ghost Application Class的创建过程,这个是Asp.net如何结合编译与解释两种技术的关键。
此模式中有两个重要的角色:Parser和Compiler,
Parser负责解释Application Script (Global.asax),当使用Code Behind 技术时,Parser会加载预编译的Assembly,也就是Global.dll,并使用Reflection技术取出其中的类信息。接着创建一个继承自此类的源代码,最后调用Compiler来编译次源代码后取得对象实例。
另外一点:多个HttpApplication对象为何能够共享Cache,Application State 对象呢?
答案很简单,这两个对象是由HttpRuntime对象所管理,HttpContext、HttpApplication对象只是单纯的作出一个转交动作而已,一个AppDomain中会有一个HttpRuntime对象存在。
来自——《深入剖析Asp.net组件设计》