本文在最为概略的层次上对.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

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

.NET涉及的一些名词的更多相关文章

  1. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  2. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  3. Kafka随笔一

    一.KafKa所涉及到的名词概念: 1.    Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. 2.    Partition:是Kafka中横向扩展和一切 ...

  4. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  5. 【转】单例模式(Singleton)

    首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输 ...

  6. Https网站搭建——通过https://localhost:8443访问tomcat首页

    图片大致介绍了Https浏览器与服务器握手的过程,涉及到的名词:证书.Hash算法.随机数密码.公钥加密.私钥解密.握手消息.hash验证.摘要 tomcat服务器配置可以实现https双向认证,简单 ...

  7. 【转】单例模式(singletion)

    单例模式(Singleton) 原地址:http://www.cnblogs.com/BoyXiao/archive/2010/05/07/1729376.html 首先来明确一个问题,那就是在某些情 ...

  8. [UML]UML系列——活动图activity diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  9. [转]面向过程的分析(POA),和面向对象的分析(OOA)

    欢迎转载本文,转载地址: http://www.juliantec.info/articles/basic-concept/poa-and-ooa.html 软件开发方法论概述 在60年代的软件开发行 ...

随机推荐

  1. Leetcode 详解(Substing without repeats character)

    Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...

  2. P53 T5

    北京某高校可用的电话号码有以下几类:校内电话号码由4位数字,第1位数字不是0:校外电话又分为本市电话和外地电话两类,拔校外电话需先拔0,若是本市电话则再接着拔8位数字(第一位不是0),若是外地电话则拔 ...

  3. 【 2013 Multi-University Training Contest 2 】

    HDU 4611 Balls Rearrangement 令lcm=LCM(a,b),gcd=GCD(a,b).cal(n,a,b)表示sum(abs(i%a-i%b)),0<=i<n. ...

  4. ScrollView can host only one direct child

    Android 采用ScrollView布局时出现异常:ScrollView can host only one direct child. 异常原因: 主要是ScrollView内部只能有一个子元素 ...

  5. 《Pro Express.js》学习笔记——Express框架常用设置项

    Express 设置 系统设置 1.       无须再定义,大部分有默认值,可不设置 2.       常用设置 env view cache view engine views trust pro ...

  6. The Managed Metadata Service or Connection is currently not available 分类: Sharepoint 2015-07-09 13:28 5人阅读 评论(0) 收藏

    Does the following error message looks familiar to you? (When you go to Site Actions –> Site Sett ...

  7. 一个Java递归删除目录的方法

    public static void delDir(File f) { // 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空. if(f.isDirectory() ...

  8. 排序系列 之 折半插入排序算法 —— Java实现

    基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...

  9. 网页for循环get测试

    for(var i=0;i<10000;i++) { var request = new XMLHttpRequest(); request.open("GET"," ...

  10. iis express 局域网访问

    查找到配置文件添加一条绑定局域网可访问的IP地址即可: 事例: <site name="Join.Lims.Mob(11)" id="19"> &l ...