.net framework体系结构

  CIL(common intermediate language):公共中间语言。.net框架下各种种类、版本的编程语言在经过编译后生成的中间语言(后缀为.il),与平台无关、与语言无关,只要机器上运行了.net框架都可以运行.il文件。

  BCL(basic class library):基类库。包含基础的类型(比如Console、string),为IL提供基础的编程支持,所有面向CIL的语言都可以使用这个类库。

  FCL(framework class library):框架类库。BCL是FCL的一个子集,【应该】包含了所有的.net类。

  CTS(common type system):公共类型系统。当自己要设计一种面向.net的高级语言时,都要遵循的规范就是CTS,比如C#。任何面向.net的语言都要满足CTS的要求,但不必实现CTS中所有的标准与规定,但语言本身不能有违背CTS的地方。这样的语言编译后生成CIL。

  CLS(common language specification):公共语言规范。一种面向.net的语言在引用另一种面向.net的语言的公开程序集的时候(即修饰符为public,若为private、protected等,则一定不能被其他语言引用),这两种语言需要满足一定的规范,即CLS。CLS是CTS的一个子集。绝大部分的FCL都满足CLS,只有极个别特殊的不满足,这就使得面向.net的程序语言都可以使用FCL中的类型。

  CLR(common language runtime):公共语言运行时。当执行.exe和程序集的时候,负责运行程序、程序集的就是CLR。在程序集中包含的CIL还不是机器能够执行的指令,CLR管理了.net程序集的执行,包括:加载和运行程序集、安全检查、将CIL代码即时编译为机器代码等。runtime虽然有时间,但是CLR和时间并没有关系。相对于编译时,CLR发生在程序的运行过程中。具体可举例子理解:在程序执行时,CLR会找到并加载main(),然后执行下面的程序。这样做,有了CLR,可以使.net程序集跨平台使用,和Java虚拟机相似。

  CLI(common language infrastructure):公共语言基础。一个国际标准。.net框架只是CLI的一个具体实现,所以,还有其他的实现。

参考资料:.NET体系结构图(Kimma)

      .NET框架-CLR和Framework(张子阳)

原文地址:https://www.cnblogs.com/minbaba/p/5601948.html