.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
注:以上参考链接均为维基百科条目,可在左侧选择中文语言。
.NET涉及的一些名词的更多相关文章
- Java之路——名词解释(一)
一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- Kafka随笔一
一.KafKa所涉及到的名词概念: 1. Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. 2. Partition:是Kafka中横向扩展和一切 ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...
- 【转】单例模式(Singleton)
首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输 ...
- Https网站搭建——通过https://localhost:8443访问tomcat首页
图片大致介绍了Https浏览器与服务器握手的过程,涉及到的名词:证书.Hash算法.随机数密码.公钥加密.私钥解密.握手消息.hash验证.摘要 tomcat服务器配置可以实现https双向认证,简单 ...
- 【转】单例模式(singletion)
单例模式(Singleton) 原地址:http://www.cnblogs.com/BoyXiao/archive/2010/05/07/1729376.html 首先来明确一个问题,那就是在某些情 ...
- [UML]UML系列——活动图activity diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- [转]面向过程的分析(POA),和面向对象的分析(OOA)
欢迎转载本文,转载地址: http://www.juliantec.info/articles/basic-concept/poa-and-ooa.html 软件开发方法论概述 在60年代的软件开发行 ...
随机推荐
- W.Richard Stevens sock program
在<TCP/IP卷一>中有一个程序sock,Stevens的主页上有,但是在LINUX下通常无法工作(那时还没有LINUX),经过百度,发现http://www.icir.org/chri ...
- VS 2015 localhost访问有效 改用 IP访问 400错误 invalid hostname 修改方法
今天新起站点发现在Chrome浏览器中,通过localhost访问是有效的,但是通过本机IP甚至127.0.0.1访问无效, 报的错误是400 Bad Request Invalid HostName ...
- JAVA内存管理
java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙.墙外面的人想进去,墙里面的人想出去. 1.java内存分布 程序计数器 栈(局部变量.操作数.动态链接.方法出口) 每一个方法从调用 ...
- Cannot open the disk 'D:\Program Files\VMOS\Centos.vmdk' or one of the snapshot disks it depends on
启动vmware时出现以下错误: Cannot open the disk 'D:\Program Files\VMOS\Centos.vmdk' or one of the snapshot dis ...
- Dom学习笔记
今天老师出了一道面试题目:取到表单里面的textbox的值,两种方法.知道一种,老师说的什么dom,我竟然不知道. 以前学html的时候,老师也重来没有提到dom的概念.javaScript只是学了一 ...
- MAC与windows下打开当前文件路径的命令行(终端)
MAC 下文件夹与终端: 1.打开当前路径的终端窗口方法: ①直接拖动要打开的文件夹到终端 ②打开finder的服务偏好设置, 勾选"新建位于文件夹位置的终端"选项, 以后可以在文 ...
- 黑马程序员——C语言基础 内存剖析
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)进制 进制是一种计数的方式,数值的表示形式.有多种进制十进制.二进制 ...
- JS 4 新特性:混合属性(mixins)之二
Mixins many classes[混合许多个类] 迄今为止,我们已经学会了简单的继承,我们还能够通过使用mixins处理机制来混合许多类.源于这种理念是非常简单的:我们能够把许多个类最终混合到一 ...
- build and set proxy in Ubuntu
build http://www.2cto.com/os/201310/249690.html set http://www.360doc.com/content/11/1112/00/2617151 ...
- MySQL5.6下使用xtrabackup部分备份恢复到MySQL5.7
现有需求:需要备份MySQL5.6环境下的部分表到MySQL5.7环境下并进行恢复 通过xtrabackup 实现部分备份有三种方式: 参考链接:http://blog.csdn.net/zhu197 ...