Вероятно, наиболее распространенный должен загрузить блоки, которые содержат сменный код от недоверяемых сторон. Код работает в его собственном AppDomain, изолируя приложение.
кроме того, не возможно разгрузить конкретный блок, но можно разгрузить AppDomains.
Для полного краткого изложения, у Chris Brumme была крупная запись в блоге на этом:
<забастовка> http://blogs.msdn.com/cbrumme/archive/2003/06/01/51466.aspx забастовка>
https://devblogs.microsoft.com/cbrumme/appdomains-application-domains /
Другое преимущество AppDomains (поскольку Вы упомянули в своем вопросе) является кодом, который Вы загружаете в него, может работать с различными правами доступа. Например, я записал приложение, которое динамично загрузило DLLs. Я был преподавателем, и они были студенческим DLLs, который я загружал. Я не хотел, чтобы некоторый раздраженный студент вытер мой жесткий диск или повредил мой реестр, таким образом, я загрузил код из их DLLs в отдельный AppDomain, который не имел файла полномочиями IO или реестром, редактируя полномочия или даже полномочия отобразить новые окна (это на самом деле только имело, выполняют полномочия).
Я думаю, что основная мотивация для того, чтобы иметь AppDomains - то, что разработчики CLR хотели способ изолировать управляемый код, не подвергаясь производительности наверху нескольких процессов Windows. CLR был первоначально реализован сверху UNIX (где создание нескольких процессов является значительно менее дорогим), AppDomains никогда не мог изобретаться.
кроме того, в то время как управляемая сменная архитектура в приложениях сторонних производителей определенно хорошее использование AppDomains, большая причина, они существуют, для известных хостов как SQL Server 2005 и ASP.NET. Например, поставщик услуг хостинга ASP.NET может предложить общее решение для хостинга, которое поддерживает несколько сайтов от нескольких клиентов все на том же поле, работающем при единственном процессе Windows.
Домены приложения являются большими для устойчивости приложения.
При наличии Вашего приложения состоят из центрального процесса, который тогда порождает "функции" в отдельном appdomains, Вы, банка может предотвратить глобальный катастрофический отказ, должен один из них неправильно себя вести.
Если Вы создаете приложение, которое позволяет сторонние плагины, можно загрузить те плагины в отдельном AppDomain так, чтобы главное приложение было безопасно от неизвестного кода.
ASP.NET также использует отдельный AppDomains для каждого веб-приложения в рамках единственного рабочего процесса.
Насколько я понимаю AppDomain разработаны для разрешения объекта хостинга (ОС, DB, Сервер и т.д....) свобода запустить несколько приложений в единственном экземпляре CLR или каждую программу в его собственном. Так проблема для хоста, а не разработчика приложений.
Это выдерживает сравнение с Java, где у Вас всегда есть 1 JVM на приложение, часто приводящее ко многим экземплярам JVM, работающей бок о бок с дублированными ресурсами.