Хороший пример использования AppDomain

46
задан hughdbrown 15 January 2013 в 16:13
поделиться

6 ответов

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

кроме того, не возможно разгрузить конкретный блок, но можно разгрузить AppDomains.

Для полного краткого изложения, у Chris Brumme была крупная запись в блоге на этом:

<забастовка> http://blogs.msdn.com/cbrumme/archive/2003/06/01/51466.aspx

https://devblogs.microsoft.com/cbrumme/appdomains-application-domains /

49
ответ дан BanksySan 26 November 2019 в 20:26
поделиться

Другое преимущество AppDomains (поскольку Вы упомянули в своем вопросе) является кодом, который Вы загружаете в него, может работать с различными правами доступа. Например, я записал приложение, которое динамично загрузило DLLs. Я был преподавателем, и они были студенческим DLLs, который я загружал. Я не хотел, чтобы некоторый раздраженный студент вытер мой жесткий диск или повредил мой реестр, таким образом, я загрузил код из их DLLs в отдельный AppDomain, который не имел файла полномочиями IO или реестром, редактируя полномочия или даже полномочия отобразить новые окна (это на самом деле только имело, выполняют полномочия).

14
ответ дан Jon Turner 26 November 2019 в 20:26
поделиться

Я думаю, что основная мотивация для того, чтобы иметь AppDomains - то, что разработчики CLR хотели способ изолировать управляемый код, не подвергаясь производительности наверху нескольких процессов Windows. CLR был первоначально реализован сверху UNIX (где создание нескольких процессов является значительно менее дорогим), AppDomains никогда не мог изобретаться.

кроме того, в то время как управляемая сменная архитектура в приложениях сторонних производителей определенно хорошее использование AppDomains, большая причина, они существуют, для известных хостов как SQL Server 2005 и ASP.NET. Например, поставщик услуг хостинга ASP.NET может предложить общее решение для хостинга, которое поддерживает несколько сайтов от нескольких клиентов все на том же поле, работающем при единственном процессе Windows.

8
ответ дан C. Dragon 76 26 November 2019 в 20:26
поделиться

Домены приложения являются большими для устойчивости приложения.

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

4
ответ дан FlySwat 26 November 2019 в 20:26
поделиться

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

ASP.NET также использует отдельный AppDomains для каждого веб-приложения в рамках единственного рабочего процесса.

4
ответ дан Mark Cidade 26 November 2019 в 20:26
поделиться

Насколько я понимаю AppDomain разработаны для разрешения объекта хостинга (ОС, DB, Сервер и т.д....) свобода запустить несколько приложений в единственном экземпляре CLR или каждую программу в его собственном. Так проблема для хоста, а не разработчика приложений.

Это выдерживает сравнение с Java, где у Вас всегда есть 1 JVM на приложение, часто приводящее ко многим экземплярам JVM, работающей бок о бок с дублированными ресурсами.

4
ответ дан Garth Gilmour 26 November 2019 в 20:26
поделиться
Другие вопросы по тегам:

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