1.CLR是.NET Framework的核心
2.CLR的核心是CTS和CLS.任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器, 将此语言的程序编译成.NET CLR所认识的metadata以及IL,符合CTS的规定.
3.CTS是通用类型系统(Common Type System)
4.CLS是公共语言定义(Common Language Specification)
5.CLR是公共语言运行时(Common language runtime)
6.CLR集成了很多种语言,它们之间可以相互访问,是因为CLR建立的标准的类型集、元数据、公共执行环境。由于各种语言间存在着极大的差别,如区分大小写,有的不支持unsigned、操作符重载或者参数可变的方法,所以要想创建这种让别的语言能访问的程序,自己所用的编程语言只能使用其它语言都支持的那些特性。为了帮助我们更好的做到这一点,Microsoft定义了一个"公共语言规范(Common Language Specification,CLS)"
7.CTS定义了一组语言编译器必须遵循的规则,以定义、引用、使用和存储引用类型和值类型。因此,遵循CTS,在不同语言中编写的对象才能彼此交互。但并不是所有的类型都可以用于所有的语言。
8.Language complier:语言编译器,每种语言基于.net的语言都会有一个面向CLR的托管模块,也可以理解为语言编译器,把对应的语言编译成MSIL
9.MSIL:微软中间语言,CLR负责把中间语言编译成为执行程序的计算机可以理解的语言,是一种介于介于高级语言和汇编语言的伪汇编语言.
10.JIT(Just In-Time compile):即时编译,将MSIL解释为程序可以理解的语言.
11.CLI,公共语言基础架构(Common Language Infrastructure)
12.CLI是一个开放的技术规范,CLI有时候会和CLR混用。但严格意义上说,这是错误的。因为CLI是一种规范,而CLR则是对这种规范的一个实现。
13.BCL,基础类库(Base Class Library)
14.BCL是一个公共编程框架,称为基类库,所有语言的开发者都能利用它。是CLI(Common Language Infrastructure,公共语言基础结构)的规范之一,主要包括:执行网络操作,执行I/O操作,安全管理,文本操作,数据库操作,XML操作,与事件日志交互,跟踪和一些诊断操作,使用非托管代码,创建与调用动态代码等,粒度相对较小,为所有框架提供基础支持。
15.FCL,框架类库(Framework Class Library)FCL提供了大粒度的编程框架,它是针对不同应用设计的框架 ,FCL大部分实现都引用了BCL,例如我们常说的开发框架:ASP.NET、MVC、WCF和WPF等等,提供了针对不同层面的编程框架 。
16.托管代码就是Visual Basic .NET和C#编译器编译出来的代码,托管代码在公共语言运行库(CLR)中运行
17.非托管代码是运行在公共语言运行库环境(CLR)的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务
18.GC(Garbage Collector)如其名,就是垃圾收集,这里仅就内存而言。
19.GC工作的原理:GC遍历应用程序在Heap(堆)上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用,已经不再被应用程序所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。
20.元数据:是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述。
原文地址:https://www.cnblogs.com/lcy0930/p/11140607.html