Пример кода нескольких.NET AppDomains

Из того, что Домен приложения.NET?:

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

Я хотел бы понять больше о том, как/почему можно было бы на самом деле использовать несколько AppDomains в их приложении. Кто-либо может предоставить примеру фактические фрагменты кода?

7
задан Community 23 May 2017 в 12:26
поделиться

4 ответа

Чтение MSDN действительно дает некоторую хорошую информацию.

http://msdn.microsoft.com/en-us/library/system.appdomain.aspx

-Dan

5
ответ дан 7 December 2019 в 01:19
поделиться

Я использовал это в следующем контексте (не иметь под рукой код для публикации)

  • Создайте новый AppDomain (например, appDomainX)
  • Создайте новый экземпляр объекта, используя этот новый домен
  • Новый объект (находящийся в новом объекте) загружается куча сборок
  • Поразмышляйте над ними, чтобы собрать некоторые метрики
  • Получить результат
  • Выгрузить appDomainX

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

3
ответ дан 7 December 2019 в 01:19
поделиться

Я работал над частью (в основном) программного обеспечения C ++, которое позволяло пользователям писать сценарии для автоматизации приложения с помощью C # или VB.NET. В приложении также было несколько компонентов, написанных на C #. Он использовал один домен приложений для компонентов программы, а другой - для изолирования скриптов.

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

1
ответ дан 7 December 2019 в 01:19
поделиться

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

Не спрашивайте, откуда я это знаю. :)

Вы также можете сделать это, если хотите запускать код в другом контексте безопасности.

1
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: