Lo scenario più comune che ho visto è quello di essere in grado di fornire estensibilità con un modello di sicurezza diverso rispetto al programma principale.
Caricamento di un plugin in un AppDomain separato consente due cose:
- È possibile implementare un modello di sicurezza più ristretto
- È possibile impedire il plugin dal abbattere l'applicazione se è bacato
Un altro buon uso di AppDomains è caricare e ispezionare un assembly. Facendo questo in un AppDomain separato puoi raccogliere informazioni (o eseguire codice) da un assembly separato, quindi scaricare l'intero assembly dallo spazio del processo. Se si carica l'assembly direttamente, non è possibile scaricarlo. Ciò è utile anche se si desidera essere in grado, in fase di esecuzione, di "aggiornare" un tipo a una nuova versione (ad esempio: caricare un assembly remoto e ricaricarlo in seguito).
fonte
2009-10-28 18:41:10
Sono sicuro che il caricamento di un plug-in buggato in un dominio di applicazione separato non può impedire al plug-in di bloccare l'applicazione: un'eccezione non gestita porterà il dominio dell'applicazione verso il basso e, di conseguenza, interromperà l'intero processo. –
+1! OO! bella pepita di informazioni. –
Dipende da come fai le cose. È possibile configurare un appdomain in modo da abbatterlo non abbattere il processo. Vedere il primo vantaggio elencato su http://msdn.microsoft.com/en-us/library/2bh4z9hs.aspx –