Das häufigste Szenario, das ich gesehen habe, ist in der Lage zu sein, Erweiterbarkeit mit einem anderen Sicherheitsmodell als das Hauptprogramm bereitzustellen.
ein Plugin in einer separaten AppDomain Laden ermöglicht es, zwei Dinge:
- Sie können einen eingeschränkteren Sicherheitsmodell
- implementieren Sie können Ihre Anwendung das Plugin verhindern abzureißen, wenn es Buggy ist
Eine weitere nette Anwendung von AppDomains ist das Laden und Inspizieren einer Baugruppe. Wenn Sie dies in einer separaten Anwendungsdomäne ausführen, können Sie Informationen (oder Code) von einer separaten Assembly abrufen und anschließend die gesamte Assembly aus dem Prozessbereich entfernen. Wenn Sie die Assembly direkt laden, besteht keine Möglichkeit, sie zu entladen. Dies ist auch nützlich, wenn Sie zur Laufzeit einen Typ auf eine neue Version "upgraden" möchten (zB: Laden Sie eine entfernte Assembly und laden Sie sie später neu).
Ich bin mir ziemlich sicher, das Laden eines Buggy-Plug-Ins in eine separate Anwendungsdomäne kann nicht verhindern, dass das Plug-in Ihre Anwendung zum Absturz bringt - eine unbehandelte Ausnahme bringt die Anwendungsdomäne zum Absturz und den gesamten Prozess. –
+1! OO! nice nugget von Informationen. –
Es hängt davon ab, wie Sie Dinge tun. Es ist möglich, eine Anwendungsdomäne einzurichten, so dass der Prozess nicht abgebrochen wird. Siehe ersten aufgeführten Vorteil auf http://msdn.microsoft.com/en-us/library/2bh4z9hs.aspx –