公共语言基础结构

CLI的定义

C#不会直接生成机器码,而是生成公共中间语言(Common Intermediate Language,CIL),之后CIL被转换成处理器能理解的机器码。

但如果要执行代码,仅仅转换为机器码是还不够的。还需要在一个代理的上下文中执行。负责C#程序执行的代理就是虚拟执行系统(Virtual Execution System,VES),也称为运行时。它负责加载和运行程序,并在程序执行时提供额外的服务(比如安全性、垃圾回收等)。

CIL和运行时规范包含在一项国际标准中,即公共语言基础结构(Common Language Infrastructure,CLI)

CLI标准包含以下更详细的规范:

  • 虚拟执行系统(VES,也就是运行时)
  • 公共中间语言(Common Intermediate Language,CIL)
  • 公共语言规范(Common Language Specification, CLS)
  • 公共类型系统(Common Type System,CTS)
  • 元数据(Metadata)
  • 框架(Framework)

CLI术语缩写

缩写 定义 说明
.NET 这是微软所实现的CLI,其中包括CLR,CIL以及各种语言——全部都相容于CLS
BCL 基类库 CLI规范的一部分,定义了集合、线程处理、控制台以及用于生成几乎所有程序所需的其他基类
C# 一种编程语言。注意C#语言规范独立于CLI标准,也得到了ECMA和ISO标准组织的认可
CIL(IL) 公共中间语言 CLI规范中的一种语言,为可在CLI的实现上执行的代码定义了指令。有时也称为中间语言(IL)或Microsoft IL(MSIL),以为区别于其他中间语言
CLI 公共语言基础结构 这个规范定义了中间语言、基类和行为特征,允许实现人员创建虚拟执行系统和编译器,确保不同的源语言能在公共执行环境的顶部进行互操作
CLR 公共语言运行时 微软根据CLI规定的定义实现的运行时
CLS 公共语言规范 CLI规范的一部分,定义了源语言必须支持的核心功能子集。只有支持这些特性,才能在基于CLI规范而实现的运行时中执行
CTS 公共类型系统 一般要由CLI相容语言来实现的一个标准,定义了编程语言向模块外部公开的类型的表示及行为。包含如何对类型进行合并以构成新类型的一些概念
FCL .NET Framework类库 用于构成Microsoft .NET Framework的类库,包含微软事件的BCL以及用于Web开发、数据库访问等的一个大型类库
VES 虚拟执行系统 作为代理负责管理为CLI编译的程序的执行