stringtranslate.com

Область применения

Домен приложения — это механизм (похожий на процесс в операционной системе ), используемый в Common Language Infrastructure (CLI) для изоляции исполняемых программных приложений друг от друга, чтобы они не влияли друг на друга. Каждый домен приложения имеет свое собственное виртуальное адресное пространство , которое ограничивает ресурсы для домена приложения, используя это адресное пространство .

Создание нескольких доменов приложений в одном процессе невозможно в .NET Core и .NET 5+. [1]

Характеристики

Домен приложения CLI содержится в процессе операционной системы. Процесс может содержать множество доменов приложений. Домены приложений имеют свойства изоляции, аналогичные свойствам процессов операционной системы:

В этом смысле CLI похож на мини-операционную систему. Он запускает один процесс, содержащий ряд подпроцессов или доменов приложений.

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

Междоменные коммуникации

Непосредственная связь не может быть достигнута между доменами приложений. Однако домены приложений все еще могут общаться друг с другом, передавая объекты через маршалинг по значению (непривязанные объекты), маршалинг по ссылке через прокси (объекты, привязанные к домену приложения). Существует третий тип объекта, называемый контекстно-привязанным объектом, который может быть маршалинг по ссылке между доменами, а также в контексте своего собственного домена приложения. Благодаря проверяемой безопасности типов управляемого кода CLI может обеспечить изоляцию сбоев между доменами с гораздо меньшими затратами, чем процесс операционной системы. Статическая проверка типов, используемая для изоляции, не требует тех же переключений процессов или аппаратных кольцевых переходов, которые требуются процессу операционной системы.

Управляемый код

Домены приложений — это концепция чисто управляемого кода . Любой включенный собственный /неуправляемый код (например, C++) в значительной степени не знает о них. Статические переменные, похоже, являются общими для всех доменов, обратные вызовы могут быть проблематичными, а любые ошибки повреждения памяти в одном домене, скорее всего, повредят другие домены.

Ссылки

  1. ^ "Технологии .NET Framework недоступны в .NET Core и .NET 5+". Microsoft Docs . Архивировано из оригинала 2019-04-20 . Получено 02.02.2021 .