ASP.NET页面剖析
ASP.NET页面会在第一次请求时动态编译。ASP.NET中的很多文件类型都有动态编译的特性。 运行时管道负责处理输入的HTTP数据包,并转化成服务器端得ASP.NET中的对象,一个系统Page类的派生类。ASP.NET中HTTP运行库会处理页面实类,并相应请求。处理页面代码的 若干事件标志着相应序列的各个生成阶段,整个过程称为“页面的生命周期”。
ASP.NET中的页面是怎么转化为类并编译为程序集的?
1、页面文件会被解析,从Page类派生出相应的实例。
2、对应的实例会被编译成程序集,并缓存到ASP.NET专用的临时目录中。
3、页面文件没有改动,程序没有重启,Bin文件夹没有改动,已编译的页面就会一直存在。
运行机制
当某请求到达时,IIS会先判断请求的资源类型。静态的资源直接由IIS处理,不用其他模块。需要处理的请求委托给已注册的模块中。当资源与可执行代码关联,IIS会将请求交给 可执行的代码做进一步的处理。 被请求的页面 每一个引用ASPX资源的请求会被映射到Page的派生类。ASP.NET HTTP运行时环境首先会确定请求的类名。页面的URL和类名联系在一起。为处理页面,ASP.NET运行库需要获得页面 实类的引用,随后HTTP运行时环境通过公共接口IHttpHandler来调用该类。根类Page实现这个接口,包含ProcessRequest方法和Boolean类型的IsReusable属性。HTTP运行库获得页 面的实例引用后会调用ProcessRequest公共方法。调用并执行ProcessRequest方法及所触发事件的整个过程统称为“页面的生命周期”。 ASP.NET运行库是页面服务的,ASP.NET工作线程会将任何输入的请求交给HTTP管线。
ASP.NET页面处理主要有两大步:
1、输入的请求交给HTTP管线生成页面实类。
2、HTTP运行时环境引用页面实类作出响应。