并行 (Side-by-Side) 执行概述
更新:2007 年 11 月
并行执行是在同一台计算机上运行应用程序或组件的多个版本的能力。在同一台计算机上,可以同时安装公共语言运行库的多个版本,还可以同时安装使用运行库的某个版本的应用程序和组件的多个版本。
下图显示了几个应用程序,这些应用程序使用同一计算机上两个不同的运行库版本。应用程序 A、B 和 C 使用运行库 1.0 版,而应用程序 D 使用运行库 1.1 版。
两个运行库版本的并行执行
.NET Framework 由公共语言运行库和大约二十四个包含 API 类型的程序集组成。运行库和 .NET Framework 程序集分别采用不同的版本。例如,运行库的 1.0 版实际上是 1.0.3705.0 版,而 .NET Framework 程序集的 1.0 版实际上是 1.0.3300.0 版。
下图显示了在同一台计算机上使用一个组件的两种不同版本的几个应用程序。应用程序 A 和 B 使用组件的 1.0 版,而应用程序 C 使用同一组件的 2.0 版。
一个组件的两种版本的并行执行
利用并行执行,可更好地控制应用程序所绑定的组件的版本,并可更好地控制应用程序所使用的运行库的版本。
并行 (Side-by-Side) 执行的优点
在 Microsoft Windows XP 和 .NET Framework 之前,发生 DLL 冲突的原因是应用程序不能区别同一代码的不同的不兼容版本。包含在 DLL 中的类型信息仅绑定到文件名。应用程序无法知道包含在 DLL 中的类型是否同用来生成该应用程序的类型相同。因此,组件的新版本会覆盖旧版本,并会破坏应用程序。
为消除 DLL 冲突,并行执行和 .NET Framework 提供了下列功能:
具有强名称的程序集。
并行执行利用具有强名称的程序集将类型信息绑定到程序集的特定版本。这可防止应用程序或组件绑定到程序集的无效版本。具有强名称的程序集还允许同一计算机上存在一个文件的多个版本,并且还允许应用程序使用一个文件的多个版本。有关更多信息,请参具有强名称的程序集。
版本识别代码存储。
.NET Framework 在全局程序集缓存中提供了版本识别代码存储。全局程序集缓存是全计算机范围的代码缓存,存在于所有安装了 .NET Framework 的计算机上。它根据版本、区域性和发行者信息存储程序集,并且支持组件和应用程序的多个版本。有关更多信息,请参见全局程序集缓存。
隔离。
使用 .NET Framework,您可以创建以隔离方式执行的应用程序和组件,这是并行执行的一个基本组成部分。实施隔离时需要了解正在使用的资源以及在应用程序或组件的多个版本间安全地共享的资源。隔离还包括使用版本特定的方式存储文件。有关隔离的更多信息,请参见 并行 (Side-by-Side) 执行的应用程序和组件的创建指南。
版本兼容性
按照设计,.NET Framework 1.0 版和 1.1 版可相互兼容。使用 .NET Framework 1.0 版生成的应用程序应当能够在 1.1 版上运行,而使用 .NET Framework 1.1 版创建的应用程序也应当能够在 1.0 版上运行。但是要注意,.NET Framework 1.1 版中添加的 API 功能无法在 .NET Framework 1.0 版中运行。使用 2.0 版创建的应用程序只能在 2.0 版上运行。2.0 版应用程序不能在 1.1 版或更早的版本上运行。有关运行库兼容性的详尽讨论,请参见 版本兼容性。
.NET Framework 的版本被视为由运行库及其关联的 .NET Framework 程序集构成的单个单元(这一概念称为程序集统一)。可以重定向程序集绑定,使其包括 .NET Framework 程序集的其他版本,但是,重写默认的程序集绑定可能会很危险,因此部署前必须进行严格测试。
请参见
任务
如何:使用应用程序配置文件指定 .NET Framework 的版本