пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Понятие домена. Роль домена в организации многопоточного режима в NET.

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

В единственном процессе может содержаться несколько доменов приложений, каждый из которых обслуживает свой исполняемый файл .NET. Такое дополнительное подразделение традиционного процесса Windows предоставляет ряд преимуществ, главные из которых:

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

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

Когда стандартный домен приложения  выгружается, все другие домены приложений выгружаются автоматически, и приложение закрывается. Для выяснения, является ли домен стандартным, используется метод IsDefaultAppDomain класса AppDomain.

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

Роль домена в организации многопоточного режима в NET.

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

Однозначного соответствия между потоками и доменами приложений не существует. В одном домене приложения могут одновременно выполняться несколько потоков, при этом конкретный поток не ограничен одним доменом приложения. Таким образом, потоки могут использоваться в разных доменах приложений. Новый поток для каждого домена приложения не создается. Когда вызывается метод в другом домене приложения, выполнение блокируется до тех пор, пока этот метод не завершит свою работу - точно так же, как если бы вызывался метод в текущем домене. Хотя обычно такое поведение является желательным, существуют случаи, когда метод нужно запустить параллельно. Это можно делать с помощью многопоточности.


14.01.2019; 12:25
хиты: 134
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь