.NET涉及的一些名词

本文在最为概略的层次上对.NET涉及的一些名词进行解释,

包括:

通用语言基础架构(Common Language Infrastructure, CLI)、

虚拟执行系统(Virtual Execution System, VES)、

通用中间语言(Common Intermediate Language, CIL)、

通用语言运行平台(Common Language Runtime, CLR)、

托管代码(Managed Code)、

托管C++(Managed Extensions for C++)、

C++/CLI、

.NET框架(.NET Framework)。

CLI是一个开放技术规范,由微软联合惠普以及英特尔于2000年向ECMA倡议(连同C#语言标准),2001年12月被ECMA采纳为标准,2003年4月ISO也将其采纳为国际标准。它定义了一个语言无关的跨体系结构的运行环境,通俗的说它定义了一个虚拟机以及在这个虚拟机上运行的中间代码(类似于Java虚拟机和Java字节码),这个虚拟机叫做VES,中间语言叫做CIL。更具体的说CLI由以下几部分组成:

通用类型系统(Common Type System, CTS)

元数据系统(Metadata)

通用语言规范(Common Language Specification, CLS)

虚拟执行系统(Virtual Execution System, VES)

通用中间语言(Common Intermediate Language, CIL)

框架(Framework)

值得一提的是, CIL原本叫做微软中间语言,即Microsoft Intermediate Language, MSIL,是完全基于堆栈的,它通过即时编译(JIT)被VES加载到CPU上执行(这个Java字节码的解释执行有区别)。

CLR是CLI的微软实现版本,用来支持.NET,是微软为他们的.NET的虚拟机所选用的名称(这里的虚拟机和上一段的有些不同)。

所谓托管代码就是能在CLR上运行的代码

托管C++,又称为C++托管扩展(Managed Extensions for C++),是对C++的一个属性和关键字的扩展,以便于在微软公司的.NET Framework进行编程,是C++的超集。

C++/CLI,是由微软设计,它在兼容原有的C++标准的同时,支持CLI标准(也就是可以运行在CLR上),它已经被ECMA通过成为正式的标准(一门新编程语言标准),它被用来代替托管C++。

.NET是由微软开发,一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件开发平台。它以CLR为基础,通俗的说,.NET是微软对CLI标准的实现,这个实现的同时提供了强大的服务(包括类库、开发工具、编程语言的支持)。

下面把这些概念再理一下:

CLI是一个标准(或者说,规范),VES和CIL是其组成部分,CLR是微软对CLI标准的实现(这个关系类似于G++和C++标准);

所谓托管代码就是运行在CLR上的代码,托管C++是微软对C++的拓展,以使得它能在CLR上运行,从而和.NET集成,现在已经被C++/CLI取代,C++/CLI已经被采纳为标准,C++/CLI是一门区别于C++的新编程语言;

.NET是微软给开发人员提供的平台,以CLR为基础,是微软对CLI的实现,C#是.NET平台的首选编程语言

参考文献:

CLI:

http://en.wikipedia.org/wiki/Common_Language_Infrastructure

VES:

http://en.wikipedia.org/wiki/Virtual_Execution_System

CIL:

http://en.wikipedia.org/wiki/Common_Intermediate_Language

CLR:

http://en.wikipedia.org/wiki/Common_Language_Runtime

Managed Extensions for C++:

http://en.wikipedia.org/wiki/Managed_Extensions_for_C%2B%2B

C++/CLI :

http://en.wikipedia.org/wiki/C%2B%2B/CLI

.NET Framework :

http://en.wikipedia.org/wiki/.NET_Framework

注:以上参考链接均为维基百科条目,可在左侧选择中文语言。

     

原文地址:https://www.cnblogs.com/liangliangh/p/3204808.html