Параллельное выполнение
Параллельное выполнение представляет собой возможность запускать несколько версий приложения или компонента с одного и того же компьютера. В одно и то же время на одном компьютере можно запускать несколько версий среды CLR, а также несколько версий приложений и компонентов, использующих одну из версий среды выполнения.
На следующем рисунке показаны несколько приложений, которые используют две разные версии среды выполнения на одном компьютере. Приложения A, B и C используют среду выполнения версии 1.0, а приложение D использует версию 1.1.
Параллельное выполнение двух версий среды выполнения
Платформа .NET Framework состоит из среды CLR и около двадцати сборок, содержащих типы API. Версии среды выполнения и сборок платформы .NET Framework устанавливаются раздельно. Например, версия среды выполнения 1.0 на самом деле является версией 1.0.3705.0, в то время как версия 1.0 сборок платформы .NET Framework — версией 1.0.3300.0.
На следующем рисунке показаны несколько приложений, которые используют две разных версии компонента на одном компьютере. Приложения A и B используют компонент версии 1.0, а приложение C использует версию 2.0 того же компонента.
Параллельное выполнение двух версий компонента
Параллельное выполнение позволяет более строго контролировать, к каким версиям компонента привязывается приложение и какую версию среды выполнения оно использует.
Преимущества параллельного выполнения
До появления Microsoft Windows XP и платформы .NET Framework возникали конфликты библиотек DLL, поскольку приложения были не в состоянии различить несовместимые между собой версии одного и того же кода. Сведения о типах, содержавшиеся в библиотеках DLL, были ограничены именем файла. Приложение не могло различить, были ли типы в библиотеке DLL теми же, что применялись в приложении. В результате новая версия компонента могла перезаписать старую и привести к сбою в работе приложений.
Следующие возможности параллельного выполнения и платформы .NET Framework исключают конфликты библиотек DLL:
Сборки со строгими именами.
Параллельное выполнение использует сборки со строгими именами, чтобы привязать сведения о типе к определенной версии сборки. Это исключает возможность того, что приложение или компонент будут привязаны к неправильной версии сборки. Сборки со строгими именами также позволяют нескольким версиям файла располагаться на одном компьютере и использоваться приложениями. Дополнительные сведения см. в разделе Сборки со строгими именами.
Хранилище, следящее за версией кода.
Платформа .NET Framework предоставляет хранилище, следящее за версией кода, в глобальном кэше сборок. Глобальный кэш сборок — это кэш, в котором хранится используемый всеми приложениями на компьютере код. Подобный кэш есть на всех компьютерах, где установлена платформа .NET Framework. Он хранит сборки на основании версии, языка и региональных параметров и сведений об издателе, а также поддерживает одновременное хранение разных версий одного и того же компонента или приложения. Дополнительные сведения см. в разделе глобальный кэш сборок.
Изоляция.
С помощью платформы .NET Framework можно создавать приложения и компоненты, которые работают изолированно. Изоляция является неотъемлемой частью параллельного выполнения. Изоляция предполагает сбор сведений о задействованных ресурсах и безопасное совместное использование ресурсов несколькими версиями приложения или компонента. Изоляция также предполагает сохранение файла с указанием версии. Дополнительные сведения об изоляции см. в разделе Рекомендации по созданию приложений и компонентов для параллельного выполнения.
Совместимость версий
Версии платформы .NET Framework 1.0 и 1.1 совместимы. Приложение, разработанное с помощью платформы .NET Framework версии 1.0, работает с версией 1.1, и наоборот. Однако следует отметить, что функции API, добавленные в платформу .NET Framework версии 1.1, не будут работать в платформе .NET Framework версии 1.0. Приложения, созданные с помощью версии 2.0, будут выполняться только в версии 2.0. Приложения версии 2.0 не будут выполняться в версии 1.1 или в более ранней версии.
В платформе .NET Framework версии рассматриваются как единые блоки, состоящие из среды выполнения и связанных с ней сборок платформы .NET Framework (концепция, называемая "унификацией сборок"). Можно перенаправлять привязку сборок, чтобы включить другие версии сборок платформы .NET Framework, но переопределение привязки по умолчанию рискованно и должно быть тщательно протестировано до развертывания.
Связанные разделы
Заголовок |
Описание |
---|---|
Описание того, как среда выполнения находит сведения о загружаемой версии среды выполнения для приложения. |
|
Общие сведения об унификации сборок платформы .NET Framework |
Описание того, как среда выполнения обрабатывает ссылки на разные версии сборок платформы .NET Framework. |
Описание шагов, выполняемых средой выполнения с целью определения, какую версию среды загружать для приложения. |
|
Описание способов привязки приложения к определенной версии сборки. |
|
Описание особенностей использования в приложениях частичных ссылок на сборки, запускаемых в режиме параллельного выполнения. |
|
Сведения и процедуры использования файлов политики издателя для перенаправления привязки сборок. |
|
Описание обработки вспомогательных сборок при параллельном выполнении. |
|
Сведения об установке и использовании нескольких версий платформы .NET Framework. |
|
Описание порядка создания файла конфигурации, который будет использоваться приложением определения, какую версию среды CLR следует использовать. |
|
Описание порядка создания и развертывания приложений и компонентов, разработанных для параллельного выполнения. |
|
Определение стратегии обслуживания для приложений и компонентов |
Описание порядка создания модели обслуживания для компонентов и приложений, имеющих версии. |
Описание порядка использования внутрипроцессной параллельной активации хост-приложения среды выполнения для запуска нескольких версий среды CLR в одном процессе. |
|
Общие сведения о сборках. |
|
Общие сведения о доменах приложений. |