.NET的HTTP请求的执行过程

1、 .NET的HTTP请求

.NET与 ASP的运行机制有很大不同.

ASP的请求与响应是,ASP页面被请求,然后逐行解释.是基于过程的.最多是包含了文件,需要先引入文件罢了.

而 .NET,在页面被请求后,首先是加载HTTP Module,这不是本文的重点.然后再加载HTTP Handler.这也不是本文的重点.加载的这两项,都需要在Webconfig文件中配置.大家知道的URL转址就是这么实现的.在完成这些之后才开始给出响应的页面.

在给出响应页面的工作中, .NET就表现出和 ASP的最大区别来..Net是面向对象的语言,是基于类的语言.没有类很难写出有意义的.Net程序.如果写出来,也就是个ASP的翻版.

2、.NET中基本文件结构(继承关系)
首先大家看到无论在1.1还是2.0中,用VS创建的网站每个 ASPx文件都对应一个cs文件(或者vb等其它语言).而cs文件里的类一般和文件同名,如果遇见关键字的情况才会自动使类名前加个'_',例如:_Default.创建的这个cs文件继承自System.Web.UI.Page类,而且只能\必须继承该类.原因就是aspx文件是继承cs文件的.

就拿Default. ASPx,Default.aspx.cs文件来说.
Default. ASPx.cs里包含了类 _Default,继承字System.Web.UI.Page
通过
就能看得出来.
而Default. ASPx文件,虽然没有阐明用的哪个类,但是,实际上已经继承自_Default类.
以上代码第一句话最后Inherits="MyTest._Default"就表明了这点.这个文件我是以VS2003建立的,也就是 .NET1.1,MyTest是我用的命名空间。

3、类的运行机制
说了这么多,实际上我们还是没有说到System.Web.HttpContext类。但是我们现在说的东西对于System.Web.HttpContext类运用很有帮助。

我们访问了Default. ASPx,那么是只访问Default.aspx文件,或者该类么?答案当然不是。 .NET中当子类被请求时,会先实例化父类。先建立父类的字段,然后是构造函数。

从上面的类中可以看出,该类没有字段,也没有构造函数。实例化它又得先实例化System.Web.UI.Page类。System.Web.UI.Page类不是本文要讨论的。在实例化_Default类的时候首先执行的是OnInit方法。它重写了System.Web.UI.Page.OnInit。然后调用InitializeComponent方法,而InitializeComponent方法又调用了Load事件,执行了Page_Load方法。

在Page_Load方法被执行之前,System.Web.UI.Page类的很多对象是不能使用的,比如:Application,Session等。

你可能感兴趣的:(职场,休闲)