Framework底层知识和概念

Framework底层知识和概念

     本文将对CLI、CIL、CTS、CLS、CLR、JIT、BCL、FCL、Module、Assembly 等专业词汇做相关的额解释和理解,这只是本人的学习笔记和总结,如果你想了解更为详细的信息,推荐你看大牛博客:http://www.tracefact.net/CLR-and-Framework/DotNet-Framework.aspx(讲解很详细)

1.CIL—公共中间语言

  Common Intermediate Language,公共中间语言

        1.公共。因为不论是C#语言也好,VB.NET语言也好,C++/CLI语言也好,甚至是重新开发的一套以自己的名字缩写命名的语言,

只要它期望运行的目标平台是.NET,在经过相应的编译器编译之后,所生成的程序集就是由CIL语言代码描述的。

       2.并不是CPU可以直接执行的本地机器语言。这种语言还需要.NET运行时(.Net runtime)环境的支持,在执行之前,进行一个被称为Just-in-

time(即时)的二次编译过程,才能转变成计算机可以识别的指令。

        3.CIL不过是一种程序语言,只不过相对于C#来说,它是一种更低级语言,CIL是一种基于堆栈的语言,同时,它提供了class、interface、继承、多态等

诸多面向对象的语言特性,因此它又是完全面向对象的语言。如果愿意,甚至可以直接编写CIL代码,并且使用CIL的编译工具IL ASM(IL Assembler,IL汇编程序)

来对它进行编译。只不过,和大多数低级语言一样,这种方式会使开发效率会变得很低。

       图解1(公共中间语言)

       

       图解2(用汇编工具看CIL)--Hello world 控制台应用程序

2.BCL和FCL

  BCL—基类库

        mscorlib.dll程序集,这个程序集中所包含的类库,即是BCL(Base Class Library,基类库)。从名字就可以看出来,这个类库包含的都是些最基本的类型,

 其本身已经与CIL语言融为一提了,为CIL语言提供基础的编程支持,以至于该类库已经成为了CLI标准的一部分,因此也可以说BCL中的类型就是CIL语言的类型

 所有面向CIL的语言都能够使用它们.

  图解--视图-对象浏览器-查看它包含了那些了哪些命名空间和类型

  

  

  BCL提供了像Console这样的类型来支持开发者编写类似控制台这样的程序

 基元类型(Primitive Type)。实际上,讲到这里大家应该已经明白了,那些由编译器直接支持,将语言本身的关键字类型转换为CIL类型的,就叫做基元类型

 显然,byte、int、string都是基元类型。而C#中并没有一个关键字去映射Console,所以我们认为Console只是普通的类类型(Class Type)

  FCL——框架类库

      FCL(Framework Class Library,框架类库)。在上一节中介绍了BCL,它是FCL的一个子集。BCL中包含了与编译器及CIL语言关系紧密的核心类型,以及常见开发任务中都会使用到的类型。而FCL包含的内容极多,仅服务于一种应用场景的子类库就足够写一本书了,从功能上来看,可以将FCL框架类库划分成以下几层。

    1.最内一层,由BCL的大部分组成,主要作用是对.NET框架、.NET运行时及CIL语言本身进行支持,

      例如基元类型、集合类型、线程处理、应用程序域、运行时、安全性、互操作等。

    2.中间一层,包含了对操作系统功能的封装,例如文件系统、网络连接、图形图像、XML操作等。

    3.最外一层,包含各种类型的应用程序,例如Windows Forms、Asp.NET、WPF、WCF、WF等。

3.CTS——公共类型系统

         

4.CLS——公共语言规范

5.CLR——公共语言运行时

6.CLI——公共语言基础

       CLI是一个国际标准,由ECMA和ISO进行了标准化,全称为Common Language Infrastructure(公共语言基础

   NET 框架提供了那些支持?

    1.

原文地址:https://www.cnblogs.com/mc67/p/4812237.html