Параллельное выполнение

Параллельное выполнение представляет собой возможность запускать несколько версий приложения или компонента с одного и того же компьютера. В одно и то же время на одном компьютере можно запускать несколько версий среды 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

Сведения об установке и использовании нескольких версий платформы .NET Framework.

Практическое руководство. Использование файла конфигурации приложения для назначения версии .NET Framework

Описание порядка создания файла конфигурации, который будет использоваться приложением определения, какую версию среды CLR следует использовать.

Создание нескольких версий приложения или компонента

Описание порядка создания и развертывания приложений и компонентов, разработанных для параллельного выполнения.

Определение стратегии обслуживания для приложений и компонентов

Описание порядка создания модели обслуживания для компонентов и приложений, имеющих версии.

Внутрипроцессное параллельное выполнение

Описание порядка использования внутрипроцессной параллельной активации хост-приложения среды выполнения для запуска нескольких версий среды CLR в одном процессе.

Сборки в среде CLR

Общие сведения о сборках.

Домены приложений

Общие сведения о доменах приложений.

Ссылки

Элемент <supportedRuntime>