CLR是common language runtime的简写,即公共语言运行时,它是微软向ECMA提交的CLI规范的一个具体实现。CLI即common language infrastructure,公共语言框架,它定义了如何去实现一个虚拟平台,为一系列满足特定规范的可执行语言提供执行环境的规范,可理解为它是在操作系统和应用程序之间加的一层抽象。那CLR是CLI的一个实现,就说明它满足了CLI的规范实现了为语言提供执行环境。
CLR的具体功能包括:执行程序、内存管理、线程管理、安全管理、异常处理等。
CLR参与到.NET高级语言转换为机器码的庞大过程中,下面就从.NET框架讲起。
一、.NET框架
.NET框架 的体系结构包括五大部分:程序设计语言及公共语言规范(CLS common language specification)、应用程序平台(ASP.NET及windows窗体等)、ADO.NET及基础类库、CLR、和程序开发环境IDE。
公共语言规范(CLS):CLS定义了各种语言间的互操作性规则,满足CLS的语言可以称为CLI语言,如C#,VB,为何它们可以互相调用彼此的类库,是因为这2个语言满足了CLS;
ADO.NET:主要用于操作存储在关系型数据库管理系统中的数据,它提供了对关系数据、XML和应用程序数据的访问;
基础类库(BCL basic class library):.NET框架的基类库提供许多类与接口,包括ADO.NET、XML、IO、网络 、调试、安全和多线程等,这些类库都是命名空间的方式来组织的。
二、.NET运行机制
在.NET框架 之上,无论采用哪种编程语言编写的应用程序,都首先被编译器编译成中间语言IL intermediate language(或者也叫MIL(微软M对IL的实现))和meta data(元数据),然后再经过一个JIT(just in time)即时编译器编译成可执行的机器码。
三、.NET 框架各版本与CLR版本的关系
.NET框架是一个独立发布的软件包,其包含了CLR、类库以及相关的语言编辑器等工具。C#代码经过编译之后在CLR环境中运行。由于.NET框架3.0/3.5其实是.NET2.0的扩展(只是增加了一些新的程序集),所以.NET3.0/3.5的CLR版本还是2.0.而且.NET3.0其实只扩展了WF、WPF、WCF、WCS等组件,并没有提供新的C#编译器,直到.NET3.5中才打包了C#3.0的编译器。.NET4.0在3.0上针对WF、WCF进行了一些新功能增加,所以.NET框架、CLR和C#编辑器的版本之间的对应关系如下表所示:
注:图中C#版本,应为C#编译器版本
参考链接 :
https://blog.youkuaiyun.com/eric_jo/article/details/4184916
https://www.cnblogs.com/yplong/p/3280008.html
http://www.cnblogs.com/haofaner/articles/2288968.html
https://www.cnblogs.com/cocoon/p/4997005.html
https://www.cnblogs.com/jimcsharp/p/4369141.html
什么是.NET开发中常提到的CLR
最新推荐文章于 2025-04-09 10:25:50 发布