首先 我们来理解这个几个相关概念。
1、什么是.NET框架?
.NET框架(.NET Framework) 是由微软开发,一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件开发平台。.NET是微软为下一个十年对服务器和桌面型软件工程迈出的第一步。NET包含许多有助于互联网和内部网应用迅捷开发的技术。
.NET框架是微软公司继Windows DNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#、VB.NET、C++、Python等)的开发。
.NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的且面向对象程序设计编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集。
2、什么是通用语言架构?
通用语言基础架构(Common Language Infrastructure,简称CLI)是一个开放的技术规范。它是由微软联合惠普以及英特尔于2000年向ECMA倡议的。通用语言基础架构定义了构成.NET Framework基础结构的可执行码以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无需修正即可将软件运行在不同的计算机体系结构上。
CLI有时候会和CLR混用。但严格意义上说,这是错误的。因为CLI是一种规范,而CLR则是对这种规范的一个实现。
CLI标准包包含以下更详细的规范
- 通用类型系统(Common Type System, CTS)
- 元数据系统(Metadata)
- 通用语言规范(Common Language Specification, CLS)
- 虚拟执行系统(Virtual Execution System, VES)
- 通用中间语言(Common Intermediate Language, CIL)
- 框架(Framework)
适合CLI规范的程序都是编译成通用中间语言,之后在执行过程中被虚拟执行系统的即时编译技术编译为机器码从而执行。
3、什么是通用语言运行库?
通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.NET的虚拟机所选用的名称。这是通用语言架构(简称CLI)的微软实现版本,它定义了一个代码运行的环境。CLR运行一种称为通用中间语言的字节码,这个是微软的通用中间语言实现版本。
CLR的主要功能如下
- 基类库支持 Base Class Libray Support
- 存储器管理 Memory Management
- 线程管理 Thread Management
- 存储器自动回收 Garbage Collection
- 安全性 Security
- 类型检查 Type Checker
- 例外管理 Exception Manager
- 除错管理 Debug Engine
- 中间码(MSIL)到机器码(Native)编译
- 类型装载 Class Loader
开发人员使用高级编程语言撰写程序。接下来编译器将代码编译成微软的中继语言(MSIL)。运行的时候CLR会将MSIL码转换为操作系统的原生码(Native code)。CLR自带有实时编译)编译器。
CLR运行在微软的视窗操作系统上。查看通用语言架构可以找到该规格的实现版本列表。其中有一些版本是运行在非Windows的操作系统中。
4、什么是微软中间语言?
通用中间语言(Common Intermediate Language,简称CIL,发音为"sill"或"kill")是一种属于通用语言架构和.NET框架的低阶(lowest-level)的人类可读的编程语言。目标为.NET 框架的语言被编译成CIL,然后汇编成字节码。CIL类似一个面向对象的汇编语言,并且它是完全基于堆栈的。它运行在虚拟机上,其主要的语言有C#、Visual Basic .NET、C++/CLI以及 J♯。
在.NET语言的测试版中,CIL原本叫做微软中间语言,即Microsoft Intermediate Language,简称MSIL。由于C#和通用语言架构的标准化,在.Net开发平台下,所有语言(C#、VB.NET、J#、Managed C++)都会被编译为MSIL,再由CLR负责运行,字节码现在已经官方地成为了CIL。因此,CIL仍旧经常与MSIL相提并论,特别是那些.NET语言的老用户。
每天早上敲醒自己的不是闹钟,是夢想!