.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平台的首选编程语言

时间: 2024-10-04 18:16:22

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

计算机网络上涉及的专业名词

URL:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换. DNS(Domain Name System,域名系统),因特网上作为域名和I

rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较

Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的读写性能. 针对Kafka性能方面进行简单分析,相关数据请参考:https://segmentfault.com/a/1190000003985468,下面介绍一下Kafka的架构和涉及到的名词: Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Parti

基于OSGi的Virgo环境搭建(一)——环境篇

1.背景 最近要将web项目模块化以支持热插拔.动态扩展等功能,因此我们开始研究如何将OSGi引入web项目.关于OSGi,大家可以参考OSGi研究 与总结.现在主流的j2EE框架都离不开Spring,因此,将OSGi与Spring进行无缝整合就成为了引入OSGi的关键.值得庆幸的 是,Spring早在08年就已对OSGi进行大力支持,并开发了子项目SpringDM与OSGi进行完美融合.但是,自从3.2版本之后,为了 Gradle,Spring摒弃OSGi(关于为什么摒弃OSGi,大家可以参考

Mybatis深入之事务管理

Mybatis之事务管理 简单介绍 Mybatis的事务管理分为两种JdbcTransaction.ManagedTransaction. 当中JdbcTransaction仅仅是对数据库连接Connection的一个包装.内部管理数据库事务还是调用Connection的提交.回滚等事务操作方法.ManagedTransaction更直接.什么也没有做.直接将事务交给外部容器管理. Mybatis事务管理相关类结构图 类概览: 类UML图(典型的简单工厂模式来创建Transaction): Tr

《解释的工具:生活中的经济学原理》读书笔记4

之前的五章,从人性本能.群体制度.供需关系.经济体系和信息问题这五个方面深入浅出地论述了作者对于在生活中.在经济活动中所易见的经济学的基本特点.起源.表现形式和发展变化的理解和认识.作者把这五章归为了第一篇,名叫“生活中的经济学概念”.而这一篇笔记要介绍的是全书的第二篇,名叫“社会关系有‘价签’”.我觉得,作者是要先通过剖析生活中的经济学现象提炼其中的经济学原理,让我们的认识深化一个层面,接触多一些的基本知识和思想,然后再回到生活中去,将之前的认识进一步引申,以深化一层对生活的认识.在这一篇中,

1.0进程的描述和控制

1.什么是进程 在计算机中,进程就是一段程序的执行. 进程包括: 1)执行这段程序所需要的代码 2)执行程序所需要的相关数据 3)操作系统管理进程所需要的信息——进程控制块 ok了解了进程的基本概念,接下来就要去了解进程的具体组成结构和操作系统如何去控制进程 2.进程的状态 在看进程的状态之前,先复习一下,进程在系统中如何运作. 操作系统通过一种分时机制实现多进程的并发执行.这里用到了并发这个词而不是并行,是因为针对单处理器的计算机来说,从来就不会有并行状态发生,一个处理器同一时间内只能处理一段

vertical-align和line-height的深入应用

本文的重点是了解vertical-align和line-height的使用 涉及到的名词:基线,底端,行内框,行框,行间距,替换元素及非替换元素,对齐.只有充分理解这些概念才会灵活运用这两个属性. 什么是对齐 对齐一定是涉及两个对象:对齐元素以及要对齐的对象:比如在军训时教官喊稍息,我们每个人都会有一个参照的标准去站齐. 而行内元素的对齐,除了行内元素本身,还有一个参考系,这个参考系就是行框的基线,而行框的基线依据于行内框元素的基线位置. 什么是基线 每一个文本元素自身都会有四条线,顶线,中线,

黑马程序员_交通灯管理系统

(1)项目的需求 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 例如: 由南向而来去往北向的车辆 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 平时开车过十字路口红绿灯的时候,也知道红绿灯运行的顺序 (1)任何方向的车,向右边转弯的时候,是不需要看红绿灯 (2)在十字路口,相对方向的红绿灯的工作方式是一样的,南相对与北,东相对与西,这把它分成两对 (3)红绿灯顺序,一对直行通道绿灯直行车辆,等直行变红,还是这对的车辆可以左转,等左转变红,就轮到下一对了.所以在设计程序的时候,只

Linux内核TCP/IP参数分析与调优

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565 如下图展示的是TCP的三个阶段.1,TCP三次握手. 2,TCP数据传输. 3,TCP的四次挥手. SYN:(同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立的时候有效.表示一个新的TCP连接请求. ACK:(确认编号,Acknowledgement Number)是对TCP请求的确认标志,同事提示对端系