Распространенное использование и лучшие практики для доменов приложений в.NET?

Каковы некоторые рекомендации и рекомендации по созданию новых доменов приложений в приложении?

Кроме того, каковы некоторые общие случаи использования и примеры использования нескольких доменов приложений в приложении?

3 ответа

Решение

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

Загрузка плагина в отдельном домене приложений позволяет сделать две вещи:

  1. Вы можете реализовать более ограниченную модель безопасности
  2. Вы можете предотвратить разрыв приложения в плагине, если он глючит

Еще одно полезное использование доменов приложений - загрузка и проверка сборки. Выполнение этого в отдельном домене приложений позволяет вам получать информацию (или запускать код) из отдельной сборки, а затем выгружать всю сборку из пространства вашего процесса. Если вы загружаете сборку напрямую, выгрузить ее невозможно. Это также полезно, если вы хотите иметь возможность во время выполнения "обновить" тип до новой версии (т. Е. Загрузить удаленную сборку и перезагрузить ее позже).

Рекомендуется создавать новый домен, когда вам нужно разместить сторонние компоненты в вашем приложении, которые ненадежны, или вы им не доверяете (например, подключаемые модули) или хотите иметь возможность их выгружать.

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

Кроме того, если вы создаете временные сборки (генерацию кода), которые хотите снова выгружать, это хороший способ сделать это. (LCG позволяет реализовывать только одиночные методы, если вы хотите реализовать законченный класс, вам нужно создать "реальную" сборку).

Другие вопросы по тегам