本文在最为概略的层次上对.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. Jquery开灯关灯效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. E. Vasya and Beautiful Arrays

    http://codeforces.com/contest/355/problem/E 每个数都可以变成段 [a-k,a], 某一个因子是否被所有的段包含,就是把这个因子以及它的所有倍数看成点, 看是 ...

  3. 更新证书错误:No matching provisioning profiles found

    在Xcode中当你在更新了你得证书而再重新编译你的程序,真机调试会出现“Your build settings specify a provisioning profile with the UUID ...

  4. linux 内核学习之八 进程调度过程分析

    一  关于进程的补充 进程调度的时机 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule() ...

  5. 快速加载DXF、DWG格式文件控件ABViewer

    ABViewer是一种高品质,低成本,高效率的多功能设计及工程文档管理应用程序. ABViewer为您提供专业的cad文件浏览和编辑工具. 支持多种格式,如:DWG格式, DXF, DWF, Hewl ...

  6. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  7. c++中变量声明和变量定义的区别。2016年12月6日

    整个流程: 1.程序告诉cpu,程序将要使用一个变量.(暂时不一定用到,先说一下.) 2.程序告诉CPU,程序现在就要使用一个变量.(现在就用) 3.cpu按照这个变量的类型,把内存划分出几个单位(b ...

  8. Adobe Reader/Acrobat修改页面底色为豆沙绿

    Adobe Acrobat_Pro_8修改PDF页面底色为豆沙绿保护视力(同样适用于Adobe Reader) http://jingyan.baidu.com/article/9989c746189 ...

  9. centos上libreoffice+unoconv安装步骤,实现word转pdf

    一.libreoffice安装 1.yum search  libreoffice查询一下系统自带的安装包 安装libreoffice.x86_64这个就可以了   2.yum install lib ...

  10. 第3.2 使用案例1:股票期货stock portfolio 21050917

    As mentioned earlier in the chapter, the first use case revolves around a stock portfolio use case  ...