Домен приложения
— Домен приложения это механизм (аналогичный процессу в операционной системе ), используемый в рамках Common Language Infrastructure (CLI) для изоляции выполняемых программных приложений друг от друга, чтобы они не влияли друг на друга. Каждый домен приложения имеет свое собственное виртуальное адресное пространство , которое ограничивает ресурсы домена приложения, используя это адресное пространство .
Создание нескольких доменов приложений в одном процессе невозможно в .NET Core и .NET 5+. [1]
Свойства [ править ]
Домен приложения CLI содержится в процессе операционной системы. Процесс может содержать множество доменов приложений. Домены приложений имеют свойства изоляции, аналогичные свойствам процессов операционной системы:
- несколько потоков . В одном домене приложения может существовать
- Приложение внутри домена можно остановить, не затрагивая состояние другого домена в том же процессе.
- Сбой или исключение в одном домене не влияет на приложение в другом домене и не приводит к сбою всего процесса, в котором размещаются эти домены.
- Информация о конфигурации является частью области действия домена, а не области действия процесса.
- Каждому домену могут быть назначены разные уровни безопасности доступа.
- Код в одном домене не может напрямую обращаться к коду в другом.
В этом смысле CLI похож на мини-операционную систему. Он запускает один процесс, который содержит несколько подпроцессов или доменов приложений.
Преимущество доменов приложений заключается в том, что для запуска нескольких доменов приложений может потребоваться меньше ресурсов, например памяти, чем для запуска нескольких процессов операционной системы. Связь между доменами по-прежнему требует маршалинга, поэтому накладные расходы могут быть больше связаны с использованием нескольких процессов, чем с взаимодействием внутри одного домена.
Междоменные коммуникации [ править ]
Невозможно обеспечить прямую связь между доменами приложений. Однако домены приложений по-прежнему могут взаимодействовать друг с другом, передавая объекты посредством маршаллинга по значению (несвязанные объекты), маршаллинга по ссылке через прокси (объекты, привязанные к домену приложения). Существует третий тип объекта, называемый объектом с привязкой к контексту, который можно маршалировать по ссылке между доменами, а также в контексте собственного домена приложения. Благодаря проверяемой типобезопасности управляемого кода CLI может обеспечить изоляцию ошибок между доменами с гораздо меньшими затратами, чем это может сделать процесс операционной системы. Проверка статического типа, используемая для изоляции, не требует тех же переключателей процессов или аппаратных кольцевых переходов, которые требуются для процесса операционной системы.
Управляемый код [ править ]
Домены приложений — это концепция чисто управляемого кода . Любой встроенный / неуправляемый код (например, C++) о них практически не знает. Статические переменные, похоже, являются общими для всех доменов, обратные вызовы могут быть проблематичными, а любые ошибки повреждения памяти в одном домене могут привести к повреждению других доменов.
Ссылки [ править ]
- ^ «Технологии .NET Framework недоступны в .NET Core и .NET 5+» . Документы Майкрософт . Архивировано из оригинала 20 апреля 2019 г. Проверено 2 февраля 2021 г.