.NET 框架
![4933701-a7bdb607bb795478.png](https://i-blog.csdnimg.cn/blog_migrate/ad2e051df07c1331f59b2bf44c38d2dd.png)
.NET
.NET框架由3部分组成,严格来说.NET框架由CLR(Common Language Runtime,公共语言运行库)和FCL(Framework Class Library,框架类库)两部分组成,不包括工具。FCL是BCL(Base Class Library,基类库)的超集,包括Windows Forms、ASP.NET、LINQ以及更多的命名空间。
![4933701-9a0b7bd9073f0b6f.png](https://i-blog.csdnimg.cn/blog_migrate/198a7ee2cb5939735121dc3a688c3b1d.png)
.NET框架
执行环境CLR
.NET框架的核心组件是CLR,它在操作系统的顶层,负责管理程序的执行。执行环境CLR在运行时管理程序的执行,包括:
- 内存管理和垃圾收集
- 代码安全验证
- 代码执行、线程管理、异常处理
![4933701-b10d136aa0a2061b.png](https://i-blog.csdnimg.cn/blog_migrate/1543c431dd198b987a8128e664398b6f.png)
执行环境CLR
编译成CIL
.NET语言的编辑器接受源代码文件,并生成名为程序集的输出文件。
- 程序集要么是可执行的,要么是DLL。
- 程序集里的代码并不是本机代码,而是一种名为CIL(Common Intermediate Language,公共中间语言)的中间语言。
![4933701-703d416809e89d6c.png](https://i-blog.csdnimg.cn/blog_migrate/5a1c2324ac6efb81d95800b45a1c5612.png)
编译过程
编译时和运行时
![4933701-71ce59a127329ca5.png](https://i-blog.csdnimg.cn/blog_migrate/cce22220eed08d7d2d110ce1fad34f59.png)
编译时和运行时过程
编译成本机代码并执行
程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行的步骤:
- 检查程序集的安全特性
- 在内存中分配空间
- 把程序集中的可执行代码发送给实时编译器(JIT,Just-in-Time),将其中一部分编译成本机代码。
![4933701-6ebd06ce898afb27.png](https://i-blog.csdnimg.cn/blog_migrate/71fb06cdf7d327bb0244ecb578dd0eb6.png)
运行时被编译成本机代码
公共语言基础结构CLI
CLI(Common Language Infrastructure,公共语言基础结构)是一组标准,每种编程语言都有一组内置的类型,用来表示如整数、浮点数、字符等之类的对象。这些类型的特性因编程语言和平台的不同而不同。然后,这种统一性的缺乏使得难以让不同语言编写的程序及库一起良好写作。
![4933701-8fca11099ab7bde5.png](https://i-blog.csdnimg.cn/blog_migrate/8ae44b3215b48909fe65371c2861e65f.png)
CLI