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


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

Понятие домена. В .NET исполняемые файлы не обслуживаются прямо внутри процесса Windows, как это происходит в случае традиционных неуправляемых приложений.

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

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

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

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

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

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

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

 

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

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

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

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

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

В любой момент времени каждый поток выполняется в каком-либо домене приложения. В домене приложения может выполняться один или несколько потоков или не выполняться ни одного потока. Среда выполнения отслеживает соответствие потоков и доменов приложений, в которых они выполняются. В любой момент времени можно найти домен, в котором выполняется поток, вызвав метод Thread.GetDomain.

 

 

 


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