最近根据博客园大神的推荐,买了本《C#从现象到本质》。做一点读书笔记。
由于不懂IL和ildasm,winddg,太深奥,理解不了,就牛嚼草一样,先总结第一遍读书,自己总结的知识点了。不知道这样会不会侵权,如果侵权了,请告诉我,我撤销这些。
第一部分“基础知识”
第1章 .NET基础知识
CLR:公共语言运行时
CTS:公共语言系统
CLS:公共语言规范
FCL:框架类库
BCL:基础类库
CLI:公共语言基础设施
DLR:动态语言运行时
TPL:任务并行库
JIT:即时编译
COM:组件对象模型
GAC:全局程序集缓存
.NET框架其最主要的两个组成部分是公共语言运行时(CLR)和框架类库(FCL),基础类库(BCL)是框架类库的一个子集。运行于底层的是公共语言运行时CLR,它是公共语言基础设施(CLI)的一个实现。CLR最主要的两个组成部分是CTS(公共语言系统)和CLS(公共语言规范)。
.NET框架的主要结构
编程语言转化成机器码,转化的过程分为两种主要的形式,即编译和解释。
IL语言是一个基于栈的、面向对象的高级语言。
托管代码是必须在CLR下执行的代码,而非托管代码则不需要CLR的支持就可以运行。
FCL就是我们用到的所有外部参考,而BCL是其中不需要手动引用的那部分。
不同的程序集可以共享一个命名空间。
程序集是一个可以寄宿于CLR中的、拥有版本号的、自解释、可配置的二进制文件,程序集的扩展名为exe或dll。
CLR是和程序集一起工作的。
单模块程序集的结构就是它的托管模块加上清单和资源文件。在任何时候,IL代码和元数据都是存在于托管模块中的。
程序需要资源时才会加载对应的程序集。
IL中的关键字可以分为三类:指令、特性和操作码。
程序集的IL和元数据支撑着.NET的运作。IL为各种框架语言建立了一个共同的编译目标,也为接下来的JIT编译做准备。JIT是最终翻译为机器码的编译器,它会做更多的优化,并通过使用不同的编译方式来利用这些优化。