• .Net 框架开发平台体系架构1


      .Net 框架包含两个部分:通用语言运行时(CLR).Net框架类库(FCL)

      CLR   

        通用语言运行时(Common Language Runtime,简称CLR)是.Net框架的核心。意为它是一个可被各种不同的编程语言所使用的运行时。所以只要编译器能够编译面向CLR的代码,开发人员可以使用任何自己喜欢的语言来编写代码。

      CLR好处:

        将编译器看作是一个语法检查器和“正确代码”的分析器。它们对我们的源代码进行检查,确保我们编写的所有东西都有意义,最后输出描述我们意图的指令序列。而我们不用提心使用不同的语法进行开发。

      托管模块的生成过程

        我们可以使用任何支持CLR的编程语言来创建源代码文件。然后使用相应的编译器来做语法检查和源代码分析。但是不管使用的是何种编译器,最后生成的结果都是一个托管模块(Managed Module)。即使用CLR支持的编程语言,编写源代码文件。然后使用该语言的编译器进行语法分析和语义分析,然后生成托管代码。  

      托管模块

        一个需要CLR才能够执行的标准Windows可移植可执行文件。(portalbe executable 简称PE)。  

      托管模块的各个组成部分:

    组成部分

    描述

    PE表头

      标准的Windows PE文件表头,类似于通用对象文件格式(Common Object File Format,简称COFF)表头。

      表头指出了文件的类型:GUI(图像用户界面),CUI(控制台用户界面),或者DLL(译注:DLL在以前表示 Windows中的动态链接库文件,即Dynamic Link Library,它是以动态链接的方式提供的一组函数库。

      在.net平台中,由于和传统的动态链接库文件有着相同的扩展名.dll,所以DLL文件的名称 被沿用了下来,但其含义已经有所改变。.NET中的DLL特指程序集文件的一种形式),

      另外该表头还包括一个时间标记用于表示文件创建的时间。

      对于仅包含 IL代码的模块,该表头的大多数信息会被忽略。

      对于包含有本地CPU代码的模块,该表头还会包含有关本地CPU代码的一些信息。

    CLR表头

      包含标识托管模块的一些信息(可以被CLR或者一些实用工具解析)。

      这些信息包括托管模块所需要的CLR版本号,一些标记,托管模块入口点方法(Main方 法)的MethodRef元数据标记,以及有关托管模块的元数据、资源、强命名、标记和其他一些意义不是太大的信息的位置和尺寸

    元数据

      每个托管模块都包含一些源数据表。

      元数据表主要分两种,一种用于描述源代码中定义的类型和成员,一种用于描述源代码中引用的类型和成员

    中间语言(IL)代码

      编译器在编译源代码时产生的指令。CLR在运行时会将IL代码编译成本地CPU指令

     

      IL代码

        大多数早先的编译器产生的代码都是面向特定CPU的体系的。而所有与CLR兼容的编译器产生的都是IL代码。由于生成期和执行受CLR管理的缘故,IL代码有时也被作托管代码(managed code)。

      元数据(metadata)

             所有面向ClR的编译器都需要为托管模块产生完整的元数据。

     元数据就是一个数据表的集合,在这些表中,其中一些用于描述托管模块的中所定义的内容(比如所定义的类型和它们的成员),另外还有一些用于描述托管模块中所引用的内容(比如被引用的类型和它们的成员)。

    元数据是一丝早先的技术如类型库、接口定义语言(IDL)文件的一个超集。需要指出的是CLR的元数据远比它们完整。而且像类型库和IDL,元数据总是和包含IL代码的文件相关联。实际上,元数据总是和这些代码一起被嵌入到同一个EXE/DLL文件中,两者根本可可能分离。因为编译器总是同是增长生元数据和IL代码,并且总是同时将它们嵌入到生成的托管模块中,所以元数据和它所描述的IL代码之间总能保持同步。


  • 相关阅读:
    springcloud组件梳理之hystrix
    springcloud组件梳理之Feign
    React Native startReactApplication 方法简析
    FREE OFFER
    修改docker默认目录
    使用云效进行自动化构建和部署
    Git同时推送到多个远端仓库【转】
    OneNote出现we're sorry. OneNote is cleanning up from the last time it was open.
    【数学基础】数据科学的概率基础
    【摄影后期基础教程】Lightroom_秋凉视频教程
  • 原文地址:https://www.cnblogs.com/scottckt/p/1820194.html
Copyright © 2020-2023  润新知