一、.NET框架的组成
.NET是微软提供的开发平台,其组成如下:
CLR(Common Language Runtime,公共语言运行库):执行环境。
BCL(Base Class Library,基类库):一个庞大的基础类库。
编程工具。
![](https://i-blog.csdnimg.cn/blog_migrate/09e8ba6b0103956b8d96eb0e6756a3e0.png)
二、编译运行
.NET语言的编译器接受源代码文件,生成名为程序集的输出文件。程序集中包含的项目如下:
程序的CIL(公共中间语言)
程序中使用的类型的原数据
对其他程序集引用的原数据
![](https://i-blog.csdnimg.cn/blog_migrate/7a792439644bd920727d9e7515062046.png)
程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行如下步骤:
检查程序集的安全特性
在内存中分配空间
把程序集中的可执行代码发送给实时(Just-In-Time,JIT)编译器,把其中一部分编译成本机代码
![](https://i-blog.csdnimg.cn/blog_migrate/79bbd6a0a028eb73dcbd56bbb550c8fc.png)
.NET平台实现语言无关性
基于.NET平台的不同编程语言编写的代码先转换成公共中间语言(CIL)
CIL再由CLR中的JIT编译器转换成适用于本机的代码执行
![](https://i-blog.csdnimg.cn/blog_migrate/e747d9379b661fcbbb1c5ba32dab1b59.png)
三、托管代码与非托管代码
托管代码:在CLR控制之下运行的代码
非托管代码:不在CLR控制之下运行的代码
四、CLR
CLR是 .NET 框架的核心组件。CLR提供下列服务:
自动垃圾收集
安全和认证
通过访问BCL得到广泛的编程功能,包括如Web服务和数据服务之类的功能。
![](https://i-blog.csdnimg.cn/blog_migrate/3d663c7c76ee680ddcc2626f70f618c2.png)
五、CLI
CLI(Common Language Infrastructure,公共语言基础结构):联结.NET框架组件的一组标准规范。CLI组成如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/ee8bbafaba81ad50f7e87c01272fb778.png)
CLI的重要组成部分:(了解即可)
公共类型系统CTS(Common Type System):定义了在托管代码中一定会使用的类型的特征。
定义了一组丰富的内置类型,以及每种类型固有的、独有的特性。
.NET兼容编程语言提供的类型通常映射到CTS中以定义的内置类型集的某一个特殊子集。
CTS最重要的特征之一是所有类型都继承自公共的基类--object。
使用CTS可以确保系统类型和用户定义类型能够被任何.NET兼容的语言使用。
公共语言规范CLS(Common Language Specification):详细说明了一个.NET兼容编程语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递。
(注:文章内容学习总结自《C#图解教程》)