1.1.3 Microsoft .NET的基本模块

.NET包括5个主要组成部分,即Windows .NET、.NET框架(.NET Framework)、.NET企业服务器、模块构建服务(Building Block Services)和Visual Studio .NET。Window .NET是融入了.NET技术的Windows,它紧密地整合了.NET的一系列核心构造模块,为数字媒体及应用间协同工作提供支持,是Microsoft公司的下一代Windows桌面平台。.NET框架的目的是便于开发商更容易地建立网络应用程序和Web服务。它的关键特色是提供了一个多语言组件开发和执行的环境。.NET企业服务器是企业集成和管理所有基于Web的各种应用的基础,它为企业未来开展电子商务提供了高可靠性、高性能、可伸缩性以及可管理性。模块构建服务是.NET平台中的核心网络服务集合。Visual Studio .NET是基于XML的编程工具和环境。它便于快速开发符合.NET体系的软件服务,使其在独立设备、企业数据中心和互联网之间的传送更加容易。

其中最核心的部分是.NET框架,.NET框架的设计目标包括以下几项:

● 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行的,还是在本地执行但在互联网上分布的,抑或是在远程执行的。

● 提供一个将软件部署和版本控制冲突最小化的代码执行环境。

● 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。

● 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。

● 使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。

● 按照工业标准生成所有通信,以确保基于.NET框架的代码可与任何其他代码集成。

.NET框架包括两个主要组件:公共语言运行时(Commnon Language Runtime,CLR)和.NET框架类库(Framework Class Library,FCL)。

公共语言运行时是.NET框架的基础,可以将它看做一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且强制实施严格的类型安全,以及可提高安全性和可靠性的其他形式的代码准确性。代码管理的概念是公共语言运行时的基本原则。以公共语言运行时为目标的代码称为托管代码。.NET框架用统一的命令集来支持任何的编程语言,支持混合语言编程,确保程序的可移植性。托管代码只是意味着在内部可执行代码与运行自身间存在已定义好的合作契约。对于像生成对象、调用方法等这样的任务,被委托给了运行语言,这使得运行语言能为可执行代码提供额外的服务。

.NET框架类库是一个综合性的面向对象的可重用类的集合,可以使用它来开发多种应用程序,这些应用程序包括传统的命令或图形用户界面应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XML Web服务)。.NET框架类库确保用户程序能够访问公共语言运行时环境。

语言互操作是一种代码与使用其他编程语言编写的另一种代码进行交互的能力。语言互操作有助于最大程度地提高代码的重用率,从而提高开发过程的效率。公共语言运行时提供内置的语言互操作支持。.NET框架通过如下3个基础来保障语言互操作:

● 中间语言(Microsoft Intermediate Language,简称为MSIL或IL),所有的.NET语言都被编译为中间语言。这是一组可以有效地转换为本机代码且独立于CPU的指令。IL包括用于加载、存储、初始化对象及调用对象的方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。要使代码可运行,必须先将IL编译为特定CPU的机器码,这通常是通过即时(JIT)编译器来完成的。在编译过程中,必须通过验证过程来查看是否可以将代码确定为类型安全。代码只需即时编译一次。当再次运行编译过的代码时,将运行已经通过JIT编译得到的机器码。这种进行JIT编译然后执行代码的过程一直重复到执行完成时为止。

● 通用类型系统(Common Type System,CTS):通用类型系统提供了定义、管理和使用类型的规范。它提供了所有支持语言互操作的语言都必须遵守的规则集,以确保不同语言所创建的类型能够进行交互操作。

● 公共语言规范(Common Language Specification,CLS):公共语言规范定义了编译器和库管理器必须遵守的规则,以确保它们所生成的语言和代码能够与其他.NET语言进行互操作。公共语言规范是通用类型系统的一个子集。

C#是一种完全符合公共语言规范的语言,能够与其他.NET语言进行互操作。C#与Microsoft .NET的关系体现在两个方面:其一,C#的设计目标就是用来开发在.NET框架中运行的代码,因此.NET框架是C#程序的运行环境;其二,C#的编程库是.NET框架类库,即C#的数据类型和操作类都来自.NET类库。