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

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

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

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

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

Класс System. AppDomain

Платформа .NET позволяет программно осуществлять мониторинг доменов приложений, создавать новые домены приложений (или выгружать их) во время выполнения, загружать в домены приложений различные сборки и решать целый ряд других задач с применением класса AppDomain из пространства имен System, которое находится в сборке mscorlib. dll.

Некоторые методы класса AppDomain

 

CreateDomain()     Этот статический метод позволяет создавать новый домен приложения в текущем процессе
  Createlnstance()   Этот метод позволяет создавать экземпляр типа из внешней сборки после загрузки соответствующей сборки в вызывающий домен приложения
ExecuteAssembly()   Этот метод позволяет запускать сборку * . ехе внутри домена приложения за счет предоставления имени ее файла
GetAssemblies() Этот метод позволяет узнать, какие сборки .NET были загружены в данный домен приложения (двоичные файлы СОМ и С игнорируются)  

 

Взаимодействие с используемым по умолчанию доменом приложения

Вспомните, что при запуске исполняемого файла .NET среда CLR автоматически помещает его в используемый по умолчанию домен приложения внутри обслуживающего процесса. Это происходит автоматически и прозрачно, потому писать какой-то специальный код не понадобится. К используемому по умолчанию домену приложения можно получить доступ в своем приложении с применением статического свойства AppDomain.CurrentDomain. Затем можно привязываться к любым интересующим событиям и использовать любые желаемые методы и свойства AppDomain для проведения диагностики во время выполнения.