什么是.NET开发中常提到的CLR
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.csdn.net/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相关推荐
- 开发中常提到的脚手架是指的什么?
以下是在网上查到的对脚手架的各种解释: 1.脚手架是指通过输入简单指令帮助你快速搭建好一个基本环境的工具,就比如gulp是任务自动构建工具,gulp-cli则是以命令行的形式安装和操作gulp的工具 ...
- java开发报错怎么处理_Java开发中常见报错及解决办法
前言: 在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因.接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷). 一.找不到Xxx.Xxx.entity.Xxx.java 最近 ...
- [xPlugins] 开发中常用富文本编辑器介绍
富文本编辑器学习,常见富文本编辑器有: CKeditor(FCkeditor).UEditor(百度推出的).NicEdit.KindEditor CKEditor 即 FCKEditor FCKed ...
- 物联网中常提到的M2M究竟是什么?
随着物联网逐渐深入现代生活,很多通信技术也涌现出来.今天,小编就和大家分享下M2M技术的相关知识. M2M技术简述 M2M(MachinetoMachine),是通过移动通讯对设备进行有效控制,从而将 ...
- 开发中时常提到的提交pr是什么意思?
在编程开发领域,PR是Pull Request的缩写,一般用于Git/SVN等版本管理软件中. 它的过程是这样的:比如你在GitHub上看到一个很牛X的项目,你fork到自己仓库后,再改动一些代码,然 ...
- Vue 开发中常见报错与处理
1. "xxxx" is assigned a value but never used.eslintno-unused-vars 错误原因:eslint的验证语法 解决办法:在错 ...
- 开发中常遇到的linux系统配置操作整理
一直以来,工作中使用xshell连接linux虚拟机.常常需要在虚拟机中搭建一个新的Linux系统,为了满足操作需要,必不可少的是一系列配置.之前对这些指令都是记录在云笔记,但是零零散散,每次用时,都 ...
- 浅谈面试中常提到的乐观锁与悲观锁
首先来看一下什么是锁? 在并发环境下,会出现多个线程对同一个资源进行争抢的情况,假设A线程对资源正在进行修改,此时B线程此时又对资源进行了修改,这就可能会导致数据不一致的问题.为了解决这个问题,很多编 ...
- 目标检测中常提到的IoU和mAP究竟是什么?
看完这篇就懂了. IoU intersect over union,中文:交并比.指目标预测框和真实框的交集和并集的比例. mAP mean average precision.是指每个类别的平均查准 ...
最新文章
- 第十章 PX4-Pixhawk-姿态控制
- ASP.NET MVC3 系列教程 - 部署你的WEB应用到IIS 6.0
- java 日期随机数_Java 生成指定时间范围的随机时间、随机中文姓名、随机字符姓名、随机数...
- 蜗牛学习正则表达式 教程 工具一网打尽
- mysql单库tps_简单计算mysql 的QPS,TPS
- Entity Framework 实践系列 —— 搞好关系 - 单相思(单向一对一,one-to-one)
- Docker 全套笔记整理
- FreeBSD 8.0候选版本RC2发布
- yuzu模拟器linux,yuzu模拟器使用教程 yuzu模拟器手机版下载
- rgba颜色和16进制颜色互相转换
- 中图分类号,文献标识码,文章编号
- HTTP请求的TCP瓶颈分析
- Python print语句输出重定向到网页前端
- UMG笔记——关于UMG 的一些基础知识和动画的实现
- Pixelmator for Mac如何使用抠..图的功能
- 微信小程序如何封装自己的组件?
- 【宝塔邮局管理器】使用教程、Email配置
- 【学习笔记】嵌入式三级
- 考研计算机难度排名2015,全国考研难度排行榜--前100名
- openSUSE----openSUSE常用的软件包管理命令