Оглавление:
Определение - Что означает домен приложения?
Домен приложения представляет собой границу логической изоляции, созданную вокруг приложений .NET, чтобы приложения не обращались и не влияли друг на друга. Это легкий процесс, имеющий собственный набор кода, данных и настроек конфигурации. Домены приложений создаются хостами времени выполнения, которые вызываются средой CLR для загрузки приложений, которые необходимо выполнить.
До .NET границей изоляции между приложениями были процессы, в которые они были загружены. Каждый процесс имел свою собственную виртуальную память и не может напрямую обращаться к памяти другого процесса. Домен приложения имеет функции, аналогичные процессам.
Домены приложений имеют следующие функции:
- Оптимальное использование системных ресурсов благодаря использованию меньшего количества процессов для выполнения нескольких приложений.
- Надежность за счет использования изоляции задач в ситуациях, когда данные не могут использоваться совместно, и для нестабильных задач, которые необходимо выгружать, не влияя на процесс.
- Повышение эффективности за счет выполнения длительных процессов, которые редко используют большие расширения с оптимальной памятью.
- Безопасность приложения путем ограничения прямого доступа к коду, выполняемому в одном приложении, из кода или ресурсов другого приложения.
- Контроль безопасности путем указания деталей конфигурации для каждого домена приложения.
Techopedia объясняет домен приложения
Домен приложения отличается тем, как CLR загружает и выполняет несколько приложений .NET в одном процессе. Он не разрешает прямой доступ к памяти загруженных приложений. Он управляется CLR .NET Framework, тогда как процесс управляется ОС. CLR обеспечивает изоляцию отказов между доменами приложений с меньшими издержками, чем процессы, благодаря присущей ему проверяемой безопасности типов управляемого кода. Кроме того, несколько потоков могут находиться в домене приложения, они могут свободно пересекать границы домена приложения.
Например, ASP.NET - это узел времени выполнения, который создает несколько доменов приложений для каждого пользователя, обращающегося к веб-сайту. Их также можно создавать и настраивать для приложений, которым необходимо изолировать код или загружать расширения только во время их использования. Этот факт делает домены приложений полезными в ситуациях, когда используются плагины и другой ненадежный код. Они также полезны для минимизации рабочего набора приложений, которые используют большие библиотеки DLL.
Для обеспечения связи между объектами в разных доменах приложения используется один из следующих трех типов объектов:
- Marshal-By-Value: полная копия объекта, переданная в домен вызывающего приложения. Это используется, когда состояние объекта может быть перемещено по соображениям производительности.
- Marshal-By-Reference-Reference (MBR): прокси объекта передается клиенту; используется, когда состояние объекта должно оставаться в домене приложения.
- С привязкой к контексту: объект MBR, используемый в доменах или в контексте его собственного домена приложения.