[读书笔记] .Net 框架程序设计 (1)
1. 什么是元数据
每个托管模块都包含的一些元数据表。元数据表主要包括两种:
描述源代码中定义的类型和成员;
描述源代码中引用的类型和成员;
2. 什么是JIT(Just-In-Time)
所谓即时编译器,就是只有在运行时等到代码被第一次执行的时候才将IL代码编译成CPU指令,这一次相对来说比较损耗性能,但是之后该代码再次被调用时,就不再重新编译,而是直接调用上次已经调用的CPU指令。一般而言JIT编译器在性能上已经做好许多优化。但是如果觉得还不满意的话,可以利用NGen.exe工具(C:\Windows\Microsoft.NET\Framework\v2.0.50727\NGen.exe),它可以预先把IL代码编译好放在一个文件中。
3. 如何一个进程中运行多个托管应用程序?
一个托管应用程序称为应用程序域(AppDomain),一般情况下一个EXE进程仅执行一个AppDomain(其实它可以
执行多个,例如IIS宿主进程)
4. 特性标记:CLSCompliant
每个托管模块都包含的一些元数据表。元数据表主要包括两种:
描述源代码中定义的类型和成员;
描述源代码中引用的类型和成员;
2. 什么是JIT(Just-In-Time)
所谓即时编译器,就是只有在运行时等到代码被第一次执行的时候才将IL代码编译成CPU指令,这一次相对来说比较损耗性能,但是之后该代码再次被调用时,就不再重新编译,而是直接调用上次已经调用的CPU指令。一般而言JIT编译器在性能上已经做好许多优化。但是如果觉得还不满意的话,可以利用NGen.exe工具(C:\Windows\Microsoft.NET\Framework\v2.0.50727\NGen.exe),它可以预先把IL代码编译好放在一个文件中。
3. 如何一个进程中运行多个托管应用程序?
一个托管应用程序称为应用程序域(AppDomain),一般情况下一个EXE进程仅执行一个AppDomain(其实它可以
执行多个,例如IIS宿主进程)
4. 特性标记:CLSCompliant
1// 告知编译器检查CLS(通用语言规范)的兼容性
2[assembly:CLSCompliant(true)]
3public class App
4{
5 // UInt32 与CLS 不兼容
6 public UInt32 Abc(){return 0;}
7
8 // 不能用大小写来区别标识符
9 public void abc(){}
10
11 // 正确,因为是私有的
12 private UInt32 ABC() {return 0;}
13
14}
2[assembly:CLSCompliant(true)]
3public class App
4{
5 // UInt32 与CLS 不兼容
6 public UInt32 Abc(){return 0;}
7
8 // 不能用大小写来区别标识符
9 public void abc(){}
10
11 // 正确,因为是私有的
12 private UInt32 ABC() {return 0;}
13
14}