Общие сведения о размещении
Обновлен: Ноябрь 2007
Платформа .NET Framework версии 2.0 позволяет приложениям, в которых размещается среда CLR, управлять многими функциями этой среды. Можно заменять некоторые функции, например выделение памяти и загрузку сборок, пользовательскими реализациями. Можно контролировать режим работы других функций, получать уведомления о событиях в среде выполнения и управлять доменами приложений.
Инициализация и запуск размещенной среды
Как и в предыдущих версиях, среда выполнения инициализируется функцией CorBindToRuntimeEx. Можно выбрать загружаемую версию среды выполнения, но в процессе может размещаться только одна версия. Если загружена версия 2.0, функция возвращает интерфейс ICLRRuntimeHost, который используется для запуска среды и выполнения управляемого кода.
![]() |
---|
В более ранних версиях возвращается интерфейс ICorRuntimeHost. |
Запуск среды выполнение описывается в разделе Загрузка среды CLR в процесс, а выполнение управляемого кода — в разделе Переход к управляемому коду размещения.
Интерфейсы управления размещением
Среда CLR в платформе .NET Framework версия 2.0 предоставляет интерфейсы управления размещением для управления многими функциями размещаемой среды, позволяет ведущему приложению реализовать другие интерфейсы управления, предоставляемые средой, а также дает возможность реализовать пользовательские интерфейсы управления размещением.
По типу обнаружения интерфейсы управления разделяются на две основные категории:
интерфейсы управления, реализуемые ведущим приложением, которые обнаруживаются средой выполнения по интерфейсу IHostControl;
интерфейсы управления, предоставляемые средой CLR, которые обнаруживаются ведущим приложением по интерфейсу ICLRControl.
В следующей таблице интерфейсы сгруппированы по типу предоставляемых ими функций. Самый важный интерфейс в каждой группе указан первым.
Группа |
Функция |
Интерфейсы |
---|---|---|
Управление загрузкой сборок |
Позволяет ведущему приложению изменять источники, из которых загружаются сборки, способ контроля версий и форматы, из которых возможна загрузка сборок. Например, можно загружать сборки из базы данных, а не из файлов на жестком диске. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление политиками |
Позволяет ведущему приложению указать способ обработки программных сбоев, чтобы обеспечить различные требования к надежности работы. Ведущее приложение получает доступ к диспетчеру среды по интерфейсу ICLRControl и реализует обратные вызовы IHostPolicyManager, чтобы передавать уведомления о сбоях из среды выполнения. |
|
Управление защитой ведущего приложения |
Позволяет применять в ведущем приложении собственную модель программирования, запрещая использование элементов указанных типов. Например, можно запретить использование в ведущем приложении примитивов для потоковой работы или синхронизации. Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl. |
|
Управление памятью |
Позволяет ведущему приложению управлять выделением памяти, предоставляя функции, заменяющие функции операционной системы, которые используются средой CLR для выделения памяти. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление сборкой мусора |
Позволяет реализовать в ведущем приложении методы для получения уведомлений о начале и окончании сборки мусора. Дает ведущему приложению возможность запускать сбор, собирать статистические данные и задавать некоторые характеристики сбора. Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление отладкой |
Позволяет ведущему приложению определять, подключен ли отладчик, чтобы передавать дополнительную отладочную информацию и настраивать задачи отладки. Ведущее приложение получает доступ к диспетчеру среды выполнения по интерфейсу ICLRControl. |
|
Управление событиями среды CLR |
Позволяет зарегистрировать ведущее приложение для получения уведомлений о событиях, содержащихся в перечислении EClrEvent. Ведущее приложение получает доступ к диспетчеру среды по интерфейсу ICLRControl и реализует обработчики событий с помощью интерфейса IActionOnCLREvent. |
|
Управление задачами |
Позволяет ведущему приложению получать уведомления, когда поток выполняет переход между управляемым и неуправляемым кодом. Дает ведущему приложению возможность управлять распределением и планированием потоков во время запуска и остановки задач. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление пулом потоков |
Позволяет ведущему приложению реализовать собственный пул потоков, используемый средой выполнения. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление синхронизацией |
Позволяет ведущему приложению реализовать собственные примитивы синхронизации, используемые средой выполнения. Ведущее приложение может предоставлять события, критические секции и семафоры. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
|
Управление завершением ввода-вывода |
Позволяет ведущему приложению реализовать собственные операции асинхронного ввода-вывода. Среда CLR с помощью интерфейса IHostControl определяет, реализована ли в ведущем приложении данная группа интерфейсов. |
![]() |
---|
Интерфейсы размещений для предыдущих версий среды выполнения описаны в разделе Интерфейсы размещения для платформы .NET Framework 1.0 и 1.1. |
Диспетчеры доменов приложений
Домены приложений обеспечивают повышенную надежность программ, в которых размещается среда CLR, за счет изоляции сборок. Сборки можно выгрузить из процесса, выгрузив все домены приложений.
Для работы с несколькими доменами приложений платформа .NET Framework версии 2.0 предоставляет класс AppDomainManager, который можно использовать в качестве базового для создания собственных диспетчеров доменов приложений. Диспетчер домена приложений, разрабатываемый для ведущего приложения, фактически является расширением этого приложения в управляемом коде. Он автоматически загружается в каждый домен приложения, создаваемый в процессе.
Использование диспетчера доменов приложений может повысить производительность, исключив некоторые переходы между управляемым и неуправляемым кодом. Он может получать уведомления о создании новых доменов приложений, давая возможность выполнить их настройку. Он также предоставляет неуправляемому ведущему приложению способ вызова управляемого кода.
См. также
Основные понятия
Ссылки
Другие ресурсы
Интерфейсы размещения для платформы .NET Framework версии 2.0 и выше