1.2 .NET Framework概览

.NET Framework是一套语言独立的应用程序开发框架。事实上它的主要特色在于简化应用程序的开发复杂性,提供一个一致的开发模型,开发人员可以选择任何支持.NET的编程语言来进行多种类型的应用程序开发,比如Visual Basic.NET、C#、J#,等等。本节主要对其概念,体系结构,公共语言运行库,.NET类库和托管执行进行简要介绍。

1.2.1 .NET Framework概念概述

.NET Framework是支持生成和运行下一代应用程序和XML Web Service的内部Windows组件。.NET Framework旨在实现下列目标:

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

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

● 提供一个可提高代码执行安全性的代码执行环境;

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

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

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

在.NET Framework中有两个主要组件:公共语言运行库和.NET Framework类库。

公共语言运行库是.NET Framework的基础。开发者可以将其看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。

.NET Framework类库是另一个主要组件,它是一个综合性的面向对象的可重用类型集合,开发者可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和 XMLWebServices)。

.NET Framework可由非托管组件承载是它一个非常主要的特性,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework不但能提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。例如,ASP.NET 承载运行库为托管代码提供可伸缩的服务器端环境。ASP.NET 直接使用运行库以启用ASP.NET应用程序和 XMLWebServices。

图1-1展示了公共语言运行库和类库与应用程序之间以及与整个系统之间的关系,同时还展示了托管代码如何在更大的结构内运行。

图1-1 .NET Framework环境

下面将更加详细地描述.NET Framework 的主要组件和功能。

1. 公共语言运行库的功能

公共语言运行库主要负责管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。这些功能是在公共语言运行库上运行的托管代码所固有的。其功能特点主要体现在如下几方面。

● 安全性

一方面,安全性取决于包括托管组件的来源(如 Internet、企业网络或本地计算机)在内的一些因素,这些托管组件将被赋予不同程度的信任。这意味着在同一活动的应用程序中,托管组件既能够执行文件访问操作、注册表访问操作或其他需小心使用的功能,也不可能执行这些功能。

另一方面,运行库强制实施代码访问安全。例如,用户可以相信嵌入在网页中的可执行文件能够在屏幕上播放动画或唱歌,但不能访问他们的个人数据、文件系统或网络。这样,运行库的安全性功能就使通过Internet部署的合法软件能够具有特别丰富的功能。

● 可靠性

公共语言运行库通过通用类型系统(common type system,CTS)的严格类型验证和代码验证基础结构来加强代码可靠性。CTS确保所有托管代码都是可以自我描述的,各种Microsoft和第三方语言编译器生成符合CTS的托管代码。

● 高效性

公共语言运行库还提高了开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,还能充分利用其他开发人员用其他语言编写的运行库、类库和组件。任何选择以运行库为目标的编译器供应商都可以这样做。以.NET Framework为目标的语言编译器使得用该语言编写的现有代码可以使用.NET Framework的功能,这大大减轻了现有应用程序的迁移过程的工作负担。

除了上述功能,运行库的托管环境还消除了许多常见的软件问题。例如,运行库自动处理对象布局并管理对对象的引用,在不再使用它们时将它们释放。这种自动内存管理解决了两个最常见的应用程序错误:内存泄漏和无效内存引用。

2. .NET Framework类库

.NET Framework类库是一个与公共语言运行库紧密集成的可重用的类型集合。该类库是面向对象的,并提供托管代码可从中导出功能的类型。这不但使.NET Framework类型易于使用,而且还减少了学习.NET Framework的新功能所需要的时间。此外,第三方组件可与.NET Framework中的类无缝集成。

例如.NET Framework中的集合类可用于开发自己所需的集合类的接口。集合类将与.NET Framework中的类无缝地混合。.NET Framework类型能够完成一系列常见编程任务,包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用.NET Framework开发下列类型的应用程序和服务:

● 控制台应用程序;

● Windows GUI应用程序(Windows窗体);

● Windows Presentation Foundation(WPF)应用程序;

● ASP.NET应用程序;

● Web服务;

● Windows服务;

● 使用Windows Communication Foundation(WCF)的面向服务的应用程序;

● 使用Windows Workflow Foundation(WF)的启用工作流程的应用程序。

1.2.2 .NET Framework 3.5体系结构

在2007年11月19日,微软发布了Visual Studio 2008和.NET Framework 3.5。下面将通过图1-2所示来介绍.NET Framework 3.5的体系结构。.NET Framework 3.0 sp1版是在2.0和其Service Pack的基础上构建的,.NET Framework 3.5版是在2.0和 3.0版及其Service Pack的基础上构建的。.NET Framework 2.0、3.0和3.5版之间的关系不同于1.0、1.1和2.0版之间的关系。.NET Framework 1.0、1.1和2.0版是彼此完全独立的,对于其中任何一个版本来说,无论计算机上是否存在其他版本,自己都可以存在于该计算机上。当1.0、1.1和2.0版位于同一台计算机上时,每个版本都有自己的公共语言运行时、类库和编译器,等等。应用程序开发人员可以根据项目需要选择面向哪个版本。

图1-2 .NET Framework 3.5总体框架图