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

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

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

• Домены приложения являются ключевым аспектом независимой от ОС природы платформы .NET, поскольку такое логическое деление абстрагируется от того, как именно ОС представляет загруженный выполняемый объект.

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

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

Из приведенного списка следует, что один процесс может содержать любое число доменов приложения, каждый из которых полностью изолирован от других доменов приложения в рамках данного процесса (а также любого другого процесса). С учетом этого следует понимать, что приложение, выполняющееся в одном домене приложения, не может получить данные (в частности, значения глобальных переменных или статических полей) другого домена приложений иначе, как с помощью протокола удаленного взаимодействия .NET (который мы рассмотрим в главе 18).

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

После этого CLR создает дополнительные домены приложения по мере необходимости, Если потребуется (хотя это и маловероятно), вы можете программно создавать домены приложения в среде выполнения в рамках выполняемого процесса, используя статические методы класса System.AppDomain. Этот класс оказывается также полезным для осуществления низкоуровневого контроля доменов приложения. Основные члены этого класса описаны в табл. 13.4.

Кроме того, тип AppDomain определяет небольшой набор событий, соответствующих различным моментам цикла существования домена приложения (табл. 13.5).

Таблица 13.4. Основные члены класса AppDomain

Член Описание
CreateDomain() Статический метод, с помощью которого создается новый домен приложения в данном процессе. Среда CLR сама создает новые домены приложения по мере необходимости, поэтому вероятность того, что вам понадобится вызывать этот член, близка к нулю
GetCurrentThreadId() Статический метод, возвращающий ID активного потока в данном домене приложения
Unload() Еще один статический метод, позволяющий выгрузить указанный домен приложения для данного процесса
BaseDirectory Свойство, возвращающее базовый каталог, используемый при поиске зависимых компоновочных блоков
CreateInstance() Метод, создающий экземпляр указанного типа, определенного в указанном файле компоновочного блока
ExecuteAssembly() Метод, выполняющий компоновочный блок в рамках домена приложения, заданного именем файла
GetAssemblies() Метод, который читает список компоновочных блоков .NET, загруженных в данном домене приложения (двоичные файлы COM и C игнорируются)
Load() Метод, используемый для динамической загрузки компоновочного блока в рамках данного домена приложения

Таблица 13.5. События типа AppDomain

Событие Описание
AssemblyLoad Возникает при загрузке компоновочного блока
AssemblyResolve Возникает, когда не удается идентифицировать компоновочный блок
DomainUnload Возникает перед началом выгрузки домена приложения
ProcessExit Возникает для домена приложения, созданного по умолчанию, когда завершается родительский процесс этого домена
ResourceResolve Возникает, когда не удается идентифицировать ресурс
TypeResolve Возникает, когда не удается идентифицировать тип
UnhandledException Возникает, когда остается без обработки сгенерированное исключение
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Идентификаторы приложений

Из книги Сущность технологии СОМ. Библиотека программиста автора Бокс Дональд

Идентификаторы приложений В версии COM под Windows NT 4.0 введено понятие приложений COM (COM applications). Приложения COM идентифицируются с помощью GUID (называемых в этом контексте AppID – идентификаторы приложения) и представляют серверный процесс для одного или более классов. Каждый CLSID


2. Домены и атрибуты

Из книги Базы данных: конспект лекций автора Автор неизвестен

2. Домены и атрибуты Домены и атрибуты – базовые понятия в теории создания баз данных и управления ими. Поясним, что же это такое.Формально, домен атрибута (обозначается dom(a)), где а – некий атрибут, определяется как множество допустимых значений одного и того же типа


ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR В предыдущих двух главах мы рассмотрели шаги, которые предпринимаются в среде CLR при выяснении параметров размещения внешних компоновочных блоков, а также роль метаданных .NET. В этой главе мы рассмотрим подробности


2.2.7. Домены

Из книги BPwin и Erwin. CASE-средства для разработки информационных систем автора Маклаков Сергей Владимирович

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


Отладка приложений в eVB

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

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


Домены

Из книги Цифровой журнал «Компьютерра» № 211 автора Журнал «Компьютерра»

Домены В Firebird вы можете сделать предварительное объявление столбца с типом данных и "шаблонным набором" атрибутов в виде домена. Как только домен будет создан и подтвержден (commit), он может быть использован в любой таблице вашей базы данных, как если бы он был типом данных.! !


ГЛАВА 13. Домены.

Из книги Домены. Все, что нужно знать о ключевом элементе Интернета автора Венедюхин Александр

ГЛАВА 13. Домены. Домены в Firebird сродни концепции "типы данных, определенные пользователем". Хотя и невозможно создать новый тип данных, в домене вы можете "упаковать" набор атрибутов с одним из существующих типов данных, присвоить ему идентификатор и после этого


Когда домены не работают

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Когда домены не работают Домен не может быть использован:* в функции CAST (<имя_домена> AS <другой_тип>);* вместо явного типа данных при определении входных и выходных аргументов хранимых процедур;* при объявлении типа данных локальной переменной в триггере или хранимой


Веб на пороге Большого взрыва: частные домены высшего уровня открыты для всех желающих! Евгений Золотов

Из книги автора

Веб на пороге Большого взрыва: частные домены высшего уровня открыты для всех желающих! Евгений Золотов Опубликовано 05 февраля 2014 Сегодня большой день для Веба. 5 февраля 2014 года стартует открытая регистрация имён в частных доменах высшего уровня.


Предисловие Домены древности и наших дней

Из книги автора

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


Глава 6 Страны, коды и домены

Из книги автора

Глава 6 Страны, коды и домены Национальными доменами называют двухбуквенные домены первого уровня, соответствующие кодам, обозначающим государства. Например, домен RU – национальный домен России; домен DE – национальный домен Германии; UZ – национальный домен Узбекистана.


RUсские домены

Из книги автора

RUсские домены История с кириллицей в домене RU, несомненно, уже вошла в летопись Рунета и показательна сразу во многих аспектах.О возможности введения кириллических имен в домене RU заговорили очень давно, еще в конце 90-х годов XX века. Более того, пока одни участники рынка


Глава 11 Безопасность и домены

Из книги автора

Глава 11 Безопасность и домены Безопасность систем адресации Интернета – очень актуальная и живо обсуждаемая в профильных сообществах тема. Только по проблемам безопасности DNS за последние годы написано множество научных трудов. Это неудивительно: DNS лежит в основе