background image

公共语言运行库具有以下一些优点。

改进了性能。

能够轻松使用其他语言开发的组件。

类库提供的可扩展类型。

公共语言运行库的执行模型包括以下几种。

将源代码

(VB、CS)编译成托管代码块。托管代码块由中间语言和元数据组成。

将托管代码合并成程序集。

加载公共语言运行库

  我们平时用

csc.exe 编译器编译后的程序都是 MSIL 形式的,包括 window 

form 和 asp.net 中的.exe 和.dll 软件或者组件.这些软件和组件在 CLR 环境下由 CLR 环
境的

JIT 编译器编译成本地代码,之后本地代码在 CLR 托管环境下

运行.

CLR 负责内存管理,垃圾回收等工作,同时负责与 OS 通信,包括 OS 上的其

他非托管软件.

何为托管代码和非托管代码?

托管代码是在

.NET 基础上开发出来的代码,这些代码经编译成 MSIL 后,在 CLR 的

JIT 即时编译后在 CLR 托管下运行,故这些代码称为托管代码.而没在.NET 的基础上开发
出来的代码,如

C/C++/vb 开发出来的 COM 组件或者 API,它们一旦编译后就编译成基于

OS 的本地代码,它们直接与 OS 通信,中间没有经过 CLR 这个中间者,而且内存等管理
是手动管理的,此类代码称之为非托管代码.

前面讲的是

.Net Framework 各版本之间相同之处,即主要框架结构模型是相同的,

那么,他们之间的最主要的区别是什么呢?先看看

.Net Framework3.0 的框架图: