你做了几年程序员,是否真正了解.NET Framework底层的构成呢?我想不是所有人都敢说真正了解,那么我们从什么是.NET Framework为起点回顾整个.NET Framework的构成和机制。
什么是.NET Framework?
答:.NET Framework 是支持生成和运行下一代(对于在.NET出来以前的框架,如asp)应用程序和 XML Web services 的内部 Windows 组件。
以上是一个简要的回答,但不足以更具体说明.NET Framework有哪些组成部分?能做些什么?
.NET Framework的组成部分?
答:它有两个主要组件:公共语言运行库和.NET Framework类库。
哪什么是公共语言运行库呢?
答:简单来说,公共语言运行库可以看作在执行时管理代码的一个代理。它提供内存管理,线程管理和远程管理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。
让你写的代码运行起来,你就必须有公共语言运行库。你可以把它看成程序运行的维护器。它关系到程序内存管理,线程管理和远程管理等等,它为你的程序带来类型安全和可靠性,可以在底层提高安全性。
什么是.NET Framework类库了?
答:这个就简单说说,它是一个面向对象的.NET代码的集合。
那么公共语言运行库怎么运作呢?
答:在回答这个问题之前先简单说说什么是托管代码和非托管代码。使用公共语言运行库中的语言编译器开发的代码称为托管代码;非托管代码就是非公共语言运行库中的语言编译器开发的代码。
托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
关于“.NET 跨语言”的语言是指基于公共语言运行库的语言编译器编译的语言。为什么能跨语言呢?这就是因为基于公共语言运行库的语言编译器和工具使用由公共语言运行库定义的通用类型系统,而且它们遵循公共语言运行库关于定义新类型以及创建、使用、保持和绑定到类型的规则。
再来说公共语言运行库怎么运作的:
1.选择源代码相对应对语言编译器,如C# 用csc
2.由公共语言运行库的语言编译器把源代码编译为MSIL(中间语言),同时生成可用的元数据。MSIL和元数据包含在一个可移植可执行(PE)文件中。
3.再由JIT(即时编译器)把MSIL编译为本机代码
4. 运行程序
这里有几个关键词:内存管理,线程管理, 远程管理,通用类型系统,中间语言,元数据,即时编译器在下一章节中再解说。