Поделиться через


Общие сведения о размещении

Обновлен: Ноябрь 2007

Платформа .NET Framework версии 2.0 позволяет приложениям, в которых размещается среда CLR, управлять многими функциями этой среды. Можно заменять некоторые функции, например выделение памяти и загрузку сборок, пользовательскими реализациями. Можно контролировать режим работы других функций, получать уведомления о событиях в среде выполнения и управлять доменами приложений.

Инициализация и запуск размещенной среды

Как и в предыдущих версиях, среда выполнения инициализируется функцией CorBindToRuntimeEx. Можно выбрать загружаемую версию среды выполнения, но в процессе может размещаться только одна версия. Если загружена версия 2.0, функция возвращает интерфейс ICLRRuntimeHost, который используется для запуска среды и выполнения управляемого кода.

zaf1h1h5.alert_note(ru-ru,VS.90).gifПримечание.

В более ранних версиях возвращается интерфейс ICorRuntimeHost.

Запуск среды выполнение описывается в разделе Загрузка среды CLR в процесс, а выполнение управляемого кода — в разделе Переход к управляемому коду размещения.

Интерфейсы управления размещением

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

По типу обнаружения интерфейсы управления разделяются на две основные категории:

  • интерфейсы управления, реализуемые ведущим приложением, которые обнаруживаются средой выполнения по интерфейсу IHostControl;

  • интерфейсы управления, предоставляемые средой CLR, которые обнаруживаются ведущим приложением по интерфейсу ICLRControl.

В следующей таблице интерфейсы сгруппированы по типу предоставляемых ими функций. Самый важный интерфейс в каждой группе указан первым.

Группа

Функция

Интерфейсы

Управление загрузкой сборок

Позволяет ведущему приложению изменять источники, из которых загружаются сборки, способ контроля версий и форматы, из которых возможна загрузка сборок. Например, можно загружать сборки из базы данных, а не из файлов на жестком диске.

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

Управление политиками

Позволяет ведущему приложению указать способ обработки программных сбоев, чтобы обеспечить различные требования к надежности работы.

Ведущее приложение получает доступ к диспетчеру среды по интерфейсу ICLRControl и реализует обратные вызовы IHostPolicyManager, чтобы передавать уведомления о сбоях из среды выполнения.

ICLRPolicyManager

IHostPolicyManager

Управление защитой ведущего приложения

Позволяет применять в ведущем приложении собственную модель программирования, запрещая использование элементов указанных типов. Например, можно запретить использование в ведущем приложении примитивов для потоковой работы или синхронизации.

Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl.

ICLRHostProtectionManager

Управление памятью

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

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

Управление сборкой мусора

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

Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostGCManager

ICLRGCManager

Управление отладкой

Позволяет ведущему приложению определять, подключен ли отладчик, чтобы передавать дополнительную отладочную информацию и настраивать задачи отладки.

Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl.

ICLRDebugManager

Управление событиями среды CLR

Позволяет зарегистрировать ведущее приложение для получения уведомлений о событиях, содержащихся в перечислении EClrEvent.

Ведущее приложение получает доступ к диспетчеру среды по интерфейсу ICLRControl и реализует обработчики событий с помощью интерфейса IActionOnCLREvent.

ICLROnEventManager

IActionOnCLREvent

Управление задачами

Позволяет ведущему приложению получать уведомления, когда поток выполняет переход между управляемым и неуправляемым кодом. Дает ведущему приложению возможность управлять распределением и планированием потоков во время запуска и остановки задач.

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

Управление пулом потоков

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

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostThreadPoolManager

Управление синхронизацией

Позволяет ведущему приложению реализовать собственные примитивы синхронизации, используемые средой выполнения. Ведущее приложение может предоставлять события, критические секции и семафоры.

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

Управление завершением ввода-вывода

Позволяет ведущему приложению реализовать собственные операции асинхронного ввода-вывода.

Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов.

IHostIoCompletionManager

zaf1h1h5.alert_note(ru-ru,VS.90).gifПримечание.

Интерфейсы размещений для предыдущих версий среды выполнения описаны в разделе Интерфейсы размещения для платформы .NET Framework 1.0 и 1.1.

Диспетчеры доменов приложений

Домены приложений обеспечивают повышенную надежность программ, в которых размещается среда CLR, за счет изоляции сборок. Сборки можно выгрузить из процесса, выгрузив все домены приложений.

Для работы с несколькими доменами приложений платформа .NET Framework версии 2.0 предоставляет класс AppDomainManager, который можно использовать в качестве базового для создания собственных диспетчеров доменов приложений. Диспетчер домена приложений, разрабатываемый для ведущего приложения, фактически является расширением этого приложения в управляемом коде. Он автоматически загружается в каждый домен приложения, создаваемый в процессе.

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

См. также

Основные понятия

Загрузка среды CLR в процесс

Ссылки

AppDomainManager

Другие ресурсы

Размещение среды CLR

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

Интерфейсы размещения для платформы .NET Framework версии 2.0 и выше