Домен приложения
Домен приложения — это механизм, реализованный в .NET, который позволяет запустить группу приложений в одном процессе, обеспечивая относительную изоляцию их друг от друга, в то же время позволяя им взаимодействовать друг с другом значительно быстрее, чем в случае отдельных процессов. В Win32 каждое приложение может состоять из одного или нескольких процессов, каждый из которых в свою очередь может порождать один или несколько потоков, таким образом для неуправляемого кода роль изолированной среды выполняет исключительно процесс, а в .NET роль изолированной среды выполняет домен приложения.
Домен полностью изолирует используемые в его рамках ресурсы от других доменов того же процесса.
Один процесс может содержать любое число доменов приложения, каждый из которых полностью изолирован от других доменов приложения в рамках данного процесса (а также любого другого процесса). С учетом этого следует понимать, что приложение, выполняющееся в одном домене приложения, не может получить данные (в частности, значения глобальных переменных или статических полей) другого домена приложения иначе, как с помощью протокола удаленного взаимодействия .NET. Для платформы .NET не предполагается прямого однозначного соответствия между доменами приложения и потоками. Напротив, домен приложения может иметь множество потоков, выполняющихся в рамках этого домена в любой момент времени. Кроме того, конкретный поток не привязан к одному домену приложения в течение всего времени существования потока. Потоки могут пересекать границы домена приложения, подчиняясь правилам потоков Win32 и целесообразности CLR. Но, хотя активные потоки могут перемещаться через границы доменов приложения, в любой конкретный момент времени один конкретный поток может выполняться в рамках только одного домена приложения (другими словами, один поток не может работать в нескольких доменах приложения одновременно).
Литература
- Эндрю Троелсен «C# и платформа .NET», Питер 2007
- Эндрю Троелсен «Язык программирования C# 2005 и платформа .NET» 3-е издание, Вильямс 2007
- http://www.rsdn.ru/article/dotnet/appdomains.xml