Домены приложений .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 Возникает, когда остается без обработки сгенерированное исключениеБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Предисловие Домены древности и наших дней
Предисловие Домены древности и наших дней В стародавние времена, когда люди не знали еще даже текстового Интернета, сети связи были другими: к ним относились, например, дороги, по которым гонцы разносили грамоты с сообщениями и приказами. Доменами тогда называли огромные
Глава 6 Страны, коды и домены
Глава 6 Страны, коды и домены Национальными доменами называют двухбуквенные домены первого уровня, соответствующие кодам, обозначающим государства. Например, домен RU – национальный домен России; домен DE – национальный домен Германии; UZ – национальный домен Узбекистана.
RUсские домены
RUсские домены История с кириллицей в домене RU, несомненно, уже вошла в летопись Рунета и показательна сразу во многих аспектах.О возможности введения кириллических имен в домене RU заговорили очень давно, еще в конце 90-х годов XX века. Более того, пока одни участники рынка
Глава 11 Безопасность и домены
Глава 11 Безопасность и домены Безопасность систем адресации Интернета – очень актуальная и живо обсуждаемая в профильных сообществах тема. Только по проблемам безопасности DNS за последние годы написано множество научных трудов. Это неудивительно: DNS лежит в основе
Идентификаторы приложений
Идентификаторы приложений В версии COM под Windows NT 4.0 введено понятие приложений COM (COM applications). Приложения COM идентифицируются с помощью GUID (называемых в этом контексте AppID – идентификаторы приложения) и представляют серверный процесс для одного или более классов. Каждый CLSID
ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR
ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR В предыдущих двух главах мы рассмотрели шаги, которые предпринимаются в среде CLR при выяснении параметров размещения внешних компоновочных блоков, а также роль метаданных .NET. В этой главе мы рассмотрим подробности
2. Домены и атрибуты
2. Домены и атрибуты Домены и атрибуты – базовые понятия в теории создания баз данных и управления ими. Поясним, что же это такое.Формально, домен атрибута (обозначается dom(a)), где а – некий атрибут, определяется как множество допустимых значений одного и того же типа
Отладка приложений в eVB
Отладка приложений в eVB Отладка приложений в eVB довольно проста. После нажатия кнопки режим отладки включается автоматически. В зависимости от того, какое устройство было выбрано в списке Devices, отладка происходит на эмуляторе или на подключенном к настольному компьютеру
Домены
Домены В Firebird вы можете сделать предварительное объявление столбца с типом данных и "шаблонным набором" атрибутов в виде домена. Как только домен будет создан и подтвержден (commit), он может быть использован в любой таблице вашей базы данных, как если бы он был типом данных.! !
ГЛАВА 13. Домены.
ГЛАВА 13. Домены. Домены в Firebird сродни концепции "типы данных, определенные пользователем". Хотя и невозможно создать новый тип данных, в домене вы можете "упаковать" набор атрибутов с одним из существующих типов данных, присвоить ему идентификатор и после этого
Когда домены не работают
Когда домены не работают Домен не может быть использован:* в функции CAST (<имя_домена> AS <другой_тип>);* вместо явного типа данных при определении входных и выходных аргументов хранимых процедур;* при объявлении типа данных локальной переменной в триггере или хранимой
2.2.7. Домены
2.2.7. Домены Домен можно определить как совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене может быть определено множество атрибутов. В понятие домена входит не только тип данных, но
Веб на пороге Большого взрыва: частные домены высшего уровня открыты для всех желающих! Евгений Золотов
Веб на пороге Большого взрыва: частные домены высшего уровня открыты для всех желающих! Евгений Золотов Опубликовано 05 февраля 2014 Сегодня большой день для Веба. 5 февраля 2014 года стартует открытая регистрация имён в частных доменах высшего уровня.