公共语言运行库具有以下一些优点。
改进了性能。
能够轻松使用其他语言开发的组件。
类库提供的可扩展类型。
公共语言运行库的执行模型包括以下几种。
将源代码
(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 的框架图: