当前位置 > 首页 > 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)编译器来完成。

图片


  • 一步一步学DLINQ(二):DataContext与实体

    2007-8-15 22:01:00

    摘要: DataContext、定义实体类、强类型DataContext、日志功能、探究查询、执行查询、创建数据库、使用DbDataReader数据源 阅读全文 lovecherry 2

  • Developing Delicious applications

    2009-8-15 23:20:00

    I am developing a little piece of software that interacts with Delicious through HTTP API. Using

  • 我对ASP.NET MVC HtmlHelper中的Form和Link的小扩展

    2011-4-1 1:07:00

    项目中碰到的问题,或多或少的记录下来,一是积累,二是各位大牛给提供更好的建议。 1、HtmlHelper中的Link 您在开发web程序的时候很有可能会定义一个执行JavaScri

  • Qt开发环境的建立

    2009-11-7 23:14:00

    阅读: 121 评论: 2 作者: feisky 发表于 2009-11-07 21:39 原文链接 开发模式 : 在宿主机Federa上通过qvfb来模拟帧缓冲 开发完毕后

  • ASP.NET Web API路由规则(二)

    2012-6-20 17:26:00

    默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplicat

  • 博客园的首页

    2009-5-26 12:57:00

    我不知道这个问题有多少人感到头痛:当你发布一篇文章的时候,该不该选择发布到首页呢? 尤其是对于一些你没有把握的内容,例如:我想谈一下F#统计学上产生替代R语言的可能性,但我又不敢肯定我的想法一

  • NH剖析:Configuration篇——SessionFactory的Cache之lambda-configuration配置

    2010-1-22 13:29:00

    阅读: 326 评论: 4 作者: 李永京 发表于 2010-01-22 10:44 原文链接 本节内容 概览 实体缓存配置 实体缓存配置(

  • 一个简单的Actor模型实现(上)

    2009-5-11 21:02:00

    Actor模型   Actor模型为并行而生,具 Wikipedia中的描述 ,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什

  • DotNet实现PictureBox重叠透明效果

    2012-4-4 1:27:00

    本文介绍DotNet中PictureBox控件实现重叠透明效果示例。 关于一般的透明效果,这里不多说,相信很多人都会,这种透明效果一般需要设置父控件,是子控件相对于父控件的透明。

  • 值类型的一点小问题

    2007-7-25 17:52:00

    摘要: 在写代码的时候如果碰上值类型,一定要注意,要不然很容易写出错误的代码。 阅读全文 紫色阴影 2007-07-25 17:08 发表评论