Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称为IL
通用类型系统(Common Type System,CTS)
公共语言规范(Common Language Specification,CLS)
.NET Framework的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR的控制下运行的代码称为托管代码(managed code)。
在.NET中,编译分为两个阶段:
(1) 把源代码编译为Microsoft中间语言(IL)。
(2) CLR把IL编译为平台专用的代码。
Microsoft中间语言与Java字节代码共享一种理念:它们都是低级语言,语法很简单(使用数字代码,而不是文本代码),可以非常快速地转换为内部机器码。对于代码来说,这种精心设计的通用语法有很重要的优点:平台无关性、提高性能和语言的互操作性。
IL总是即时编译的(称为JIT编译),而Java字节代码常常是解释性的,Java的一个缺点是,在运行应用程序时,把Java字节代码转换为内部可执行代码的过程会导致性能的损失(但在最近,Java在某些平台上能进行JIT编译)。
JIT编译器并不是把整个应用程序一次编译完(这样会有很长的启动时间),而是只编译它调用的那部分代码(这是其名称由来)。代码编译过一次后,得到的内部可执行代码就存储起来,直到退出该应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。Microsoft认为这个过程要比一开始就编译整个应用程序代码的效率高得多,因为任何应用程序的大部分代码实际上并不是在每次运行过程中都执行。使用JIT编译器,从来都不会编译这种代码。
语言互操作性的真正含义是用一种语言编写的类应能直接与用另一种语言编写的类通信。特别是:
● 用一种语言编写的类应能继承用另一种语言编写的类。
● 一个类应能包含另一个类的实例,而不管它们是使用什么语言编写的。
● 一个对象应能直接调用用其他语言编写的另一个对象的方法。
● 对象(或对象的引用)应能在方法之间传递。
● 在不同的语言之间调用方法时,应能在调试器中调试这些方法调用,即调试不同语言编写的源代码。
ildasm是一个基于Windows的实用程序,可以用于检查程序集的内容,包括程序集清单和元数据。第17章将介绍ildasm。
Windows Presentation Foundation(WPF)
Windows Communication Foundation(WCF)