分享
 
 
 

什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: |||超大  

什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

什么是.NET?

起源:比尔盖茨在2000年的PRofessional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service,也就是后来的.NET。

软件层:.NET可以被看作是介于操作系统和编程语言之间的软件层,它可以支持多种编程语言,包括C#,VB.NET,C++,F#,等等。

用来产生托管代码的框架、平台:传统的编译方式是"源代码→编译→可执行文件",在.NET中编译方式是"源代码→编译→程序集→可执行文件"。编译后的程序集包含IL代码和元数据,在运行时再转换成机器代码。

按开发到执行阶段来说:开发阶段.NET提供了庞大的类库,在程序执行阶段,.NET提供了一个CLR运行时环境帮助我们实时编译程序、进行安全检查、执行垃圾回收,管理内存等。

规范:.NET包含了众多的规范,比如CIL,BCL, FCL, CTS, CLS,等等。

什么是IL?

IL,Intermediage Language,中间语言,并不是CPU可以直接执行的本地机器语言,在转换成计算机可以识别的指令之前,还要进行一个被称为"Just in time"的二次编译过程。在.NET框架下,任何语言,比如C++,VB.NET,C#,等等,在经过各自的编译器编译之后,都会被转换成中间语言。IL还有另外的2种叫法:CIL,Common Intermediate Language;MSIL, Microsoft Intermediate Language。

查看IL代码,参考这里:http://www.cnblogs.com/darrenji/p/3967669.html

什么是CLI?

CLI,Common Language Infrastructure, 公用语言基础, .NET的各种规范都遵循了这个标准。

什么是BCL?

BCL, Basic Class Library, .NE为我们提供的基类库。

创建一个控制台项目。

把鼠标停留在Console上,并按F12。

发现Console是System的成员,点击System。

发现System是mscorlib的成员,点击mscorlib。

发现mscorlib是一个程序集,位于C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll

也就是mscorlib包含了.NET的基类库。

string类型是否属于基类库呢?

把鼠标停留在string关键字上,并按F12。

发现string实际上是System.String类型,原来.NET为我们把关键字string和CLI标准System.String作了映射。

依此类推, btye映射了System.Byte, short映射了System.Int16, 等等。

像string, byte, short,等等,这些都是基元类型。所以,凡是把语言本省的关键字与CLI的类型映射起来的,都叫基元类型。

什么是FCL?

FCL, Framework Class Library, 框架类库,提供的类库更多,BCL是FCL的子集。比如,在asp.net MVC下提供了System.Web.MVC。

什么是CTS?

CTS, Common Type System, 公共类型系统。CTS规定了在编程语言中可以定义的方面,包括:类、结构、委托,类中的方法、字段、属性、事件等,还定义了一些约束,比如所有类型都隐式继承自System.Object类型。

什么是CLS?

CLS, Common Language Specification, 公共语言规范,必须完全符合CTS的标准,是CTS的子集。比如C#编译生成的程序集有很多类,VB编译生成的程序集也有很多类,现在VB编译需要引用C#程序集的某个类,怎么办呢?

我们需要让C#程序集中,需要被引用的这个类符合CLS规范,.NET为我们准备了CLSCompliant特性。

[assembly:CLSCompliant(true)]

public class SomeClass

{

}

什么是CLR?

CLR, Common Language Runtime, 公用语言运行时。IL代码需要通过CLR进行即时编译才能转换成机器代码。大致过程是:

编程语言代码编译生成程序集。程序集中的PE/COFF头包含了供Windows操作系统查看和使用的信息;CLR头告诉操作系统这是一个.NET程序集;程序集清单描述了程序集本身的信息,比如程序集标识、程序集包含的资源、组成程序集的文件,等等;元数据描述了程序集包含的内容,比如包含的模块、类型、类型成员、类型成员的可见性,等等。

CLR开始工作:管理应用程序域,加载和运行程序集, 安全检查, 将IL代码JIT编译成机器代码,异常处理, 垃圾回收,等等。

相关文章:

CLR如何加载程序集以及程序集版本策略 http://www.cnblogs.com/darrenji/p/4179916.html查看是否安装.NET Framework、.NET Framework的版本号、CLR版本号 http://www.cnblogs.com/darrenji/p/3977406.htmlCLR是如何被加载并工作的 http://www.cnblogs.com/darrenji/p/4159259.html

什么是JIT?

JIT, just in time, 即时编译。在CLR中,把IL转换成机器代码的工作交给了JIT编译器。即时编译只在方法第一次被调用时发生。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有