.NET框架中系列专业技术术语和缩写

CIL (Common Intermediate Language) 公共中间语言

      CIL最初是随着.NET由微软一起发布的,之前也叫MSIL(Microsoft Intermediate Language),后来进行了标准化被称作CIL,也会简写为IL

CBL (Base Class Library) 基类库

包含的都是最基本的类型,其本身已经与CIL语言融为一体,为CIL语言提供基础的编程支持。
该类库已经成为了CLI标准的一部分
 FCL的一个子集

FCL (Framework Class Library) 框架类库

最内一层:由BCL的大部分组成,主要作用是对.NET框架,.NET运行时及CIL语言本身进行支持,例如基元类型,集合类型,线程处理,应用程序域,运行时,安全性,互操作等。
中间一层:包含了对操作系统功能的封装,例如文件系统,网络连接,图形图像,XML操作等。
最外一层:包含各种类型的应用程序,例如Windows Forms, Asp.NET , WPF, WCF , WF等。

 

CTS (Common Type System) 公共类型系统

      如果要开发一套新语言,这种语言和C#或VB.NET一样,在编译后能生成CIL代码,也可以在.NET环境下运行。要开发的新语言相当于CIL的高级语言版本,所以
要做什么并不是由新语言决定的,而是由CIL来决定的。因此,需要一套CIL的定义,规则或标准。这套规则定义了我们的语言可以做什么,不可以做什么,具有
哪些特性。这套规则就称作CTS(Common Type System, 公共类型系统)。
     C#和VB.NET不过是微软自己开发的一套符合了CTS的语言,实际上还有很多的组织或团体,也开发了这样的语言,比如Delphi.NET , FORTRAN等。
     CTS规定了可以在语言中定义诸如类,结构,委托等类型,这些规定定义了语言中更高层次的内容,我们才可以去定义类类型(Class Type)或者结构类型(Struct Type)等。
     CTS规范了类型中可以包含字段(field),属性(property),方法(method),事件(event)等。
     CTS规定了各种访问属性,比如Private,Public,Family(C#中为Protected),Assembly(C#中为internal),Family and assembly(C#中没有提供实现),Family or assembly(C#中为protected internal)。
    CTS还定义了一些约束,例如,所以类型都隐式地继承自System.Object类型,所有类型都只能继承自一个基类。
  (众所周知,传统C++是可以继承自多个基类的。为了让熟悉C++语言的开发者也能在.NET框架上开发应用程序,微软推出了面向.NET的C++/CLI语言(也叫托管C++)),它就是符合CTS的C++
改版语言,为了满足CTS规范,它被限制了只能继承自一个基类。

特别说明:
      1》C#并没有提供Family and assembly的实现,C#中也没有全局方法(Global Method)。换言之,C#只实现了CTS的部分功能。也就是说CTS规范了语言能够实现的所有能力,但是符合CTS规范的具体语言不一定要实现CTS规范所定义的全部功能。
    2》C++/CLI又被约束为只能继承自一个基类,换言之,C++中的部分功能被删除了。就是说,任何语言要符合CTS,其中与CTS不兼容的部分都要被舍弃。

显然,由于CIL是.NET运行时所能理解的语言,因此它实现了CTS的全部功能。虽然它是一种低级语言,但是实际上,它所具有的功能更加完整。

CLS (Common Language Specification ) 公共语言规范

为了解决面向.NET的各个语言之间的相互引用,各个语言希望被引用的部分而要遵循的一套标准(语言特性)。 对于某个语言只要它公开的部分能够满足这些规范,就能被其他语言的程序集所引用。

tops:
语言特性:是否区分大小写,标识符的命名规则如何、可以使用的基本类型有哪些、构造函数的调用方式(是否会调用基类构造函数),支持的访问修饰符等。
.NET提供了一个特性CLSCompliant用于在编译时检测程序集是否符合CLS 类名加上特性[assembly:CLSCompliant(true)]


CLR (Common Language Runtime) 公共语言运行时

.NET框架核心 还有一种叫法,即VES(Virtual Execution System,虚拟执行系统)。CLR是.NET程序集的运行环境,有点类似Java虚拟机
由于CLR本身用于管理托管代码,因此它是由非托管代码编写的,并不是一个包含了托管代码的程序集,也不能使用IL DASM进行查看


CLI (Common Language Infrastructure) 公共语言基础

CLI是一个国际标准,由ECMA和ISO进行了标准化。它只是一个概念和汇总。
CLI包括:CIL,CTS,CLS,VES,元数据,基础框架。

TIPS: CLI是一个标准,而.NET框架是这个标准的具体实现。在CLI中,并没有CLR的概念,只有VES,而CLR就是.NET框架中VES的具体实现。
.NET框架是CLI标准在Windows平台上的具体实现。
Mono Project是CLI标准的另一个实现,Mono Project的目标就是将.NET框架多平台化

摘抄自张子阳《NET之美》


原文地址:https://www.cnblogs.com/dbycl/p/6419456.html