C# 程序如何运行,Asp.Net页面生命周期

C# 程序如何运行

         (NET Framework,一个运行在操作系统Windows之上的软件虚拟机。)

开发出来的程序经过编译之后,生成的可执行程序。实际上包含的只是MSIL(微软中间语言)指令代码,这是一种托管代码,只能运行在.NET虚拟机之上。

托管EXE文件被调用时,Windows先加载该文件,发现其.idata部分记录了要把MSCorEE.dll加载到进程的地址空间.加载了MSCorEE.dll后,加载器获得_CorExeMain函数的地址,同时修正托管EXE中的stub函数的JMP指令。进程的主线程开始执行修正后的x86 stub函数,该函数会跳转到_CorExeMain函数上,_CorExeMain函数开始初始化CLR,并查看可执行程序集的CLR表头以确定要执行的托管入口点方法。随后IL代码被翻译成本地CPU指令。CLR跳转到编译后的本地CPU指令上,至此,托管应用程序开始真正运行。

Asp.Net页面生命周期

当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面,  完全识别 HTTP 页面处理程序类后,ASP.NET 运行时将调用处理程序的 ProcessRequest 方法来处理请求,来创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。其中页面对象ProcessRequest方法 完成的这一系列事件的处理过程就是Asp.Net页面生命周期。

初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载

.页面生命周期的主要阶段包括: 阶段 事件/方法

页面初始化          Page_Init

加载View State      LoadViewState

回发数据处理      LoadPostData 将提交到表单的值加载到控件中

页面加载          Page_Load

回发通知          RaisePostDataChangedEvent 只在回传postback时调用

回发事件处理     RaisePostBackEvent

页面预渲染     

   Page_PreRender 需要在所有事件执行完后进行处理调用此方法最好的办法,一般这是在客户端现页面之前改变页面及其控件最后一次机会。

   此处也可创建动态控件,但是追加的方法不包括processPostData,这意味着不会有回传什,也不会有事件的触发。

保存             viewstate SaveViewState

Page渲染         Page_Render

Page 卸载       Page_UnLoad

  相关文章:http://blog.jobbole.com/84446/

强类型

  一直说C#是强类型语言,通俗地讲,便是指C#中的“变量”在开发时的类型便是明确的:String便是String,Int32就是Int32,毫无争议。强类型的好处有很多,张嘴便可随意举上几例:

  能够享受代码提示功能

  能够获得重构工具的支持

  能够在编译期发现更多错误

  ……

  不过C#也不是“绝对”的强类型语言,因为它也有弱类型,那就是Object。我们知道Object是所有类型的最终基类,任何类型的对象都可以使用Object来引用。可是一旦转化成Object的变量之后,代码提示便消失了;即使我们“明确”对象的确切类型,也必须通过Cast才能使用——更何况它形成了一种被“滥用”或“误用”的机会。例如一段错误代码可能会传入一个不符合约定类型的对象,那么就会造成错误。更严重的是,这样的错误可能只要在“运行时”才能被发现,编译器对此无能为力。

面向对象

三大特性

继承、封装、多态

posted @ 2015-05-26 11:43  丁焕轩  阅读(934)  评论(0编辑  收藏  举报