.NET 绝不仅仅是 XML Web Service。.NET 的核心是 .NET Framework,它由公共语言运行库和类库组成。这两个组件为构建 .NET 应用程序提供了执行引擎和编程 API。
为 .NET 编译的应用程序不是被直接编译成本机代码,而是被编译成一种称为 Microsoft 中间语言 (MSIL) 的中间语言。当首次运行一个应用程序时,公共语言运行库实时编译器在程序执行前将 MSIL 代码编译成本机代码。公共语言运行库不是一个简单的 JIT 编译器,它还负责提供内存回收、异常处理、安全服务、运行时类型安全检查等底层执行服务。由于公共语言运行库在管理执行方面的作用,因此有时将以 .NET Framework 为目标的程序称为“托管”应用程序。
.NET Framework 是一组类,它们用于构建在公共语言运行库上运行的应用程序。这些类库为包括数据访问、安全性、文件 IO、XML 操作、消息传送、类反射、XML Web Service、ASP.NET 和 Microsoft Windows 服务在内的各种任务提供强大的支持。
也许 .NET 最独特的属性是它的多语言支持。Microsoft 已经为 .NET Framework 发布了四种商业语言:Visual C#® .NET、Visual Basic® .NET、C++ 托管扩展及 Visual J# .NET。许多其他兼容 .NET 的语言也正在开发中,其中包括 Perl、Python 及 COBOL。
为了帮助创建兼容 .NET Framework 的语言,Microsoft 设计了公共语言规范 (CLS)。每种语言要使用 .NET Framework 和公共语言运行库,以及与用其他语言编写的组件进行互操作,就必须提供 CLS 所描述的功能。如果一种语言实现了必需的功能,那么它就被称为兼容 .NET。每种兼容 .NET 的语言都支持相同的数据类型,使用相同的 .NET Framework 类,编译为相同的 MSIL,并且使用相同的公共语言运行库管理执行过程。因此,各种兼容 .NET 的语言之间没有优劣之别。开发人员可以自由地为特定的组件选择最好的语言同时又不损失该平台的能力和自由度。另外,使用一种语言编写的组件也能够很容易地与用另外一种语言编写的组件进行互操作。例如,您可以用 C# 编写一个从用 Visual Basic 编写的基类继承而来的类。CLS 已经被提交给 ECMA 进行标准化,这鼓励许多语言开发人员为许多语言创建兼容 .NET 的版本。在撰写本文时有 20 多种兼容 .NET 的语言正在开发中。
图 1 展示了在操作系统之上的各种 .NET 组件。.NET Framework 由四个蓝框组成,这些蓝框分别代表 ASP.Net、Windows 窗体、ADO.NET 和 XML 以及子组件。