C# 本质论

托管执行和公共语言基础结构

       处理器不能直接解释一个程序集.程序集采用的是另一种语言,即公共中间语言(Common Intermediate Language, CIL),或者简称为中间语言(IL).

       注意 CIL的另一种说法即MSIL, 即Microsoft IL.

       C#编译器只是将C#源代码文件转换成为CIL.为了将CIL代码转换成处理器能够理解的机器码,还要执行一个额外的步骤(该步骤通常是在执行时完成的).这个步骤涉及C#执行中的一个重要元素:VES(Virtual Execution System,虚拟执行系统).VES也被人称为“运行时”,它根据需要来编译CIL代码,这个过程称为即时编译或者JIT编译(just-in-time compilation).

      

       托管代码(managed code) :代码在"运行时"这样一个"代理"的上下文中执行.

       托管执行(managed execution):在"运行时"的控制下执行的过程.

       非托管代码(unmanaged code):在执行过程中不需要"运行时"的代码.

     

       CLI(common Languageinfrastructure,公共语言基础结构)

       VES规范被包含在一个包容面更广的规范中,即CLI(common Languageinfrastructure,公共语言基础结构)规范.作为一个国际行标准,CLI包含了以下几方面的规范.

  1.  VES或"运行时".
  2.  CIL
  3.  为语言互操作性提供支持的一个类型系统,成为CTS(Common Type System,公共类型系统).
  4.  如何编写能通过各种CLI兼容语言访问的库的指导原则,这部分内容具体放在公共语言规范(Common Language Specification CLS)中.
  5.  市各种服务能被CLI(包括程序集的布局或文件格式规范)识别的元数据
  6.  一个公共编程框架,称为基类库(Base Class Library, BCL),所有语言的开发者都能利用它.
  7.  语言互操作性:不同源语言之间的互操作性.语言编译器将每一种源语言转换成相同的中间语言(CIL),从而实现这种互操作性.
  8.  类型安全:检查类型间的转换,确保只有相互兼容的类型才会进行转换.这有助于防止发生缓冲区溢出.造成安全问题的一个主要诱因.
  9.  代码访问安全性:程序集开发者的代码有权在计算机上执行的证明.
  10.  垃圾回收
  11.  平台可移植性
  12.  BCL

猜你喜欢

转载自www.cnblogs.com/caozhenjia/p/12201590.html