当前位置 > 首页 > Asp.net

ASP.NET框架设计(一)-----Famework是如何执行程序?

2009-10-25 23:10:00来源:Asp.net

  阅读: 23 评论: 1 作者: pcxpt.exe 发表于 2009-10-25 22:51 原文链接

ASP.NET框架设计(一)-----Famework是如何执行程序?

沉默很久了,在DotNet Famework也生活了很久, DotNet的世界是精彩的。因此在我的即将毕业之前,打算对我在DotNet中的感悟做一个总结。也做为我原创的一个开始。

很小的时候就常常被告知要建造一座大厦基础非常重要,在接触DotNet几年后渐渐的我才明白了。在DotNet的大厦中15层是面向CLR语言的掌握程度(如c#vb等),5层以上的是从全局来架构一个系统,而大厦地表以下部分是DotNet Framework这个框架运行的核心部分。

Asp.net是一个非常强大的构建webwindows应用程序的,他可以非常灵活并相对快速的构建一个目标系统。但大多数人只熟悉Asp.net中的WebFormsWindowFormWebServices等在DotNet框架中的高层。在这个课题上我将总结关于我对框架的运行机制的一些叙述。

 

一、公共语言运行库(Common Language RuntimeCLR

为什么DotNet平台可以使用多种语言来构建目标程序?原因在与公共语言运行库(Common Language RuntimeCLR),CLR可以通过多种语言来使用的运行库(它的另外一个特性是使用异常来报告错误)。实际上,CLR不关心发人员用那种语言来编程。

微软面向CLR创建了几种编辑器(包括:vbvbc.exec#csc.exe等)和一个中间语言(Intermediate LanguageIL)汇编器。运行过程如下:

图片


 

无论用什么编译器最终生成的都是一个托管模块。托管模块是一个标准的32PE32文件或一个标准的64PE32+文件,但他们都需要CLR才能执行

二、元数据(metadata

元数据(metadata)是一个数据表。该表描述了模块中定义的内容(比如:类型等),还有一部分元数据表描述了托管模块引用的内容。元数据总是嵌入与代码相同的EXE/DLL,编译其同时生成元数据跟代码并绑定到最终生成的托管模块中。

三、中间语言(Intermediate LanguageIL

IL是一种与CPU无关的机器语言,但比大多数机器语言高级得多。高级语言可以通过编译器来生成IL,同样的也可以用汇编语言来写IL。下面我们通过一个方法来理解IL的执行。

为了执行一个方法,该方法对应的IL首先必须转换成本地CPU指令,通过CLRJIT(just-in-time)编译器来完成。

图片