Программное создание новых доменов приложения

Программное создание новых доменов приложения

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

static void Main(string[] args) {

 …

 // Создание нового AppDomain в рамках текущего процесса.

 AppDomain anotherAD = AppDomain.CreateDomain("SecondAppDomain");

 PrintAllAssembliesInAppDomain(anotherAD);

 Console.ReadLine();

}

Если выполнить приложение теперь (рис. 13.7), вы увидите, что компоновочные блоки System.Windows.Forms.dll, System.Drawing.dll и System.dll будут загружены только в рамках домена приложения, созданного по умолчанию. Это может показаться нелогичным для тех. кто имеете опыт программирования с использованием традиционных подходов Win32 (скорее, оба домена приложения должны иметь доступ к одному и тому же множеству компоновочных блоков). Напомним, однако, о том. что компоновочный блок загружается в рамки домена приложения а не в рамки непосредственно самого процесса.

Рис. 13.7. Один процесс с двумя доменами приложения

Далее, обратите внимание на то, что домен приложения SecondAppDomain автоматически получает свою собственную копию mscorlib.dll, поскольку этот ключевой компоновочный блок автоматически загружается средой CLR для каждого домена приложения. Это порождает следующий вопрос "Как можно программно загрузить компоновочный блок в домен приложения?" Ответ: с помощью метода АррDomain.Load() (или, альтернативно, с помощью AppDomain.executeAssembly()). В предположении, что вы скопировали CarLibrary.dll в каталог приложения AppDomainManipulator.exe, вы можете загрузить CarLibrary.dll в домен приложения SecondAppDomain так.

static void Main(string[] args) {

 Console.WriteLine("***** Чудесное приложение AppDomain ***** ");

 …

 // Загрузка CarLibrary.dll в новый AppDomain.

 AppDomain anotherAD = AppDomain.CreateDomain("SecondAppDomain");

 anotherAD.Load("CarLibrary");

 PrintAllAssembliesInAppDomain(anotherAD);

 Console.ReadLine();

}

Чтобы закрепить понимание взаимосвязей между процессами, доменами приложения и компоновочными блоками, рассмотрите рис. 13.8, на котором представлена диаграмма внутреннего устройства только что построенного процесса AppDomainManipulator.exe.

Рис. 13.8. Схема функционирования процесса AppDomainManipulator.exe

Поделитесь на страничке

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

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

Список доменов приложения процесса

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

Список доменов приложения процесса Для примера программного взаимодействия с доменами приложений .NET предположим, что у нас есть новое консольное приложение C# с именем AppDomainManipulator, в рамках которого определяется статический метод PrintAllAssembliesInAppDomain(). Этот вспомогательный


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

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Программная выгрузка доменов приложения Важно понимать, что среда CLR не позволяет выгружать отдельные компоновочные блоки .NET. Однако, используя метод AppDomain.Unload(), вы можете избирательно выгрузить домен приложения из объемлющего процесса. При этом домен приложения


Программное создание вторичных потоков

Из книги XSLT автора Хольцнер Стивен

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


Создание MDI-приложения

Из книги Технология XSLT автора Валиков Алексей Николаевич

Создание MDI-приложения Чтобы завершить краткое знакомство с Windows Forms, давайте обсудим то, как настроить форму на работу в качестве родительского объекта для любого числа дочерних окон (т.е. в качестве MDI-контейнера). MDI-приложения дают пользователям возможность открывать


Создание приложения клиента

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Создание приложения клиента Теперь, когда вы лучше понимаете внутреннюю композицию генерируемого агента, давайте попытаемся его использовать. Создайте новое консольное приложение с именем CalculatorClient, добавьте в проект файл proxy.cs с помощью выбора Project?Add Existing Item из меню и


Создание новых записей в форме, связанной с данными

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

Создание новых записей в форме, связанной с данными Для создания новой записи в связанном с данными приложении на основе Windows Forms нужно использовать метод AddNew объекта BindingContext. При выполнении этого метода любые связанные с данными элементы управления очищаются для ввода


Элемент : создание новых элементов на этапе выполнения

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

Элемент <xsl:element>: создание новых элементов на этапе выполнения Новые элементы можно создавать при помощи элемента <xsl:element>, который очень удобен для задания имени нового элемента на этапе выполнения.У этого элемента три атрибута:• name (обязательный). Имя


Элемент : создание новых атрибутов

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

Элемент <xsl:attribute>: создание новых атрибутов Аналогично тому, как вы можете создавать новые элементы при помощи <xsl:element> и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента <xsl:attribute> это можно делать для атрибутов. У элемента два


Создание новых языков

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Создание новых языков Хотя мы и говорим об XML, как о формате описания данных, на самом деле XML — это метаязык, язык, который описывает другие языки. Строго говоря, когда мы создаем XML-документ, мы создаем его не на XML, а в соответствии с XML-синтаксисом. XML — это всего лишь набор


14.3.1. Создание новых каталогов

Из книги Инфобизнес за один день автора Ушанов Азамат

14.3.1. Создание новых каталогов Создание новых каталогов выполняется очень просто.#include <fcntl.h>#include <unistd.h>int mkdir(const char * dirname, mode_t mode);Путь, определенный в dirname, создается как новый каталог с полномочием mode (что модифицируется umask процесса). Если dirname определяет существующий


Создание приложения для смартфона

Из книги UNIX — универсальная среда программирования автора Пайк Роб

Создание приложения для смартфона В главе 7 уже создавался проект, рассчитанный на работу с смартфоном. Мы тогда немного забежали вперед. Настало время вернуться к истокам и начать изучение с самого начала.Запустите Visual Studio 2005 для создания нового проекта. Надо выбрать тип


5. Редактирование реестра и создание новых объектов в реестре

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

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


Создание приложения без формы

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

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


17.3.1. Изменение макета слайда, создание новых слайдов

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

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


4. Создание новых предложений (20 % времени)

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

4. Создание новых предложений (20 % времени) Также 20 % времени вы тратите на создание новых предложений. Мы рекомендуем два часа в день уделять раскрутке вашего инфобизнеса, подписной страницы, бесплатных курсов и наращиванию подписной базы. Час в день посвятить всему, что