.NET缩写
.NET框架的组成
CLR
:公共语言运行库
- 内存管理
- 代码安全验证
- 代码执行、线程管理及异常处理
- 垃圾收集
BCL
:基类库是.NET框架使用的一个大的类库
编译成CIL
.NET语言 的编译器接受源代码文件,并生成名为程序集的输出文件。
- 程序集要么是可执行的,要么是DLL
- 程序集里的代码并不是本机代码,而是一种名称为CIL(Common Intermediate Language)的中间语言。
- 程序集包含的信息中,包括下列项目:
- 程序的CIL
- 程序中使用的类型的元数据
- 对其他程序集引用的元数据
编译成本机代码并执行
程序的CIL直到它被调用运行时才会被编译成本机代码 在运行时,CLR执行下面的步骤
- 检查程序集的安全特性
- 在内存中分配空间
- 把程序集中的可执行代码发送给定时(JIT)编译器,把其中的一部分编译成本机代码.
程序集中的可执行代码只在需要的时候由JIT编译器编译,然后它就被缓存以备在后来的程序中执行。使用这个方法意味着不被调用的代码不会被编译成本机代码,而且被调用的代码只被编译一次。一旦CIL被编译成本机代码,CLR就在它运行时管理它,执行像释放无主内存、检查数组边界、检查参数类型和管理异常之类的任务。有两个重要的术语。
托管代码:为.NET框架编写的代码称为托管代码,需要CLR
非托管代码:不在CLR控制之下运行的代码,比如Win32 C/C++ DLL,称为非托管代码。
CLR
.NET框架的核心组件是CLR,它在操作系统的顶层,负责管理程序的执行。提供:自动垃圾收集,安全和认证,通过访问BCL得到广泛的编程功能,包括如Web服务和数据服务之类的功能。