Esiste un AppDomain per ogni programma C# anche se non creiamo specificamente un AppDomain? Perché è richiesto? Ho letto di assembly di terze parti che bloccano l'intera applicazione se non li cariciamo in AppDomain separato. Non ho capito bene quel punto. Qualcuno può spiegare anche questo.Esiste un AppDomain per ogni programma C#?
risposta
AppDomain
è praticamente come un processo, è un'infrastruttura in cui viene eseguita l'applicazione. Un assembly .NET deve essere caricato in un AppDomain
per essere eseguito. Non è necessario caricare gli assembly di terze parti in AppDomains
separato, ma se lo si fa, fornisce l'isolamento tra di loro (come due processi separati) e il malfunzionamento in uno non influisce sull'altro. I domini delle applicazioni possono essere scaricati in modo indipendente.
Come esempio, utilizzare SQL Server AppDomain
s per caricare assembly CLR sicuro nel suo processo.
Ogni applicazione ha almeno un dominio di applicazione, sì.
Non so che cosa la nota sugli assembly 3rd party significa.
c'è almeno un AppDomain per ogni programma è possibile creare come molti come ti piace, ma si avrà raramente bisogno più di uno.
suo fondamentalmente un contenitore in cui il codice che viene eseguito con una particolare fiducia è in esecuzione.
C'è un dominio applicazione predefinita in cui l'applicazione viene caricato in (ogni istanza prende il proprio).
L'arresto anomalo significa che un assembly di terze parti (ad esempio un plug-in) interromperà l'intera applicazione quando si blocca se non viene caricata in un dominio app separato. Pertanto, è buona pratica caricare i plug-in in un dominio app separato, perché un arresto anomalo in un dominio app arresta solo il dominio dell'app e non gli altri domini. Il CLR Add-In blog ha alcuni post su questo.
Una cosa importante da notare è che un dominio app non ha necessariamente bisogno di essere nello stesso processo o sullo stesso sistema, quindi è fondamentalmente necessario per il servizio remoto.
Ho letto sugli assembly 3rd party che causano incidente, se non facciamo uso di AppDomain
Penso che si sta parlando di caricamento di altri gruppi per i domini applicazione separata. In questo modo possono essere isolati dallo spazio degli indirizzi per evitare che si verifichi un arresto anomalo del loro codice. Il costo è che comunicare con un assembly in un dominio app separato è più difficile e presenta una penalità perfetta poiché tutte le chiamate devono essere marializzate attraverso il limite del dominio dell'app.
Questo è un argomento abbastanza avanzato, consiglierei di leggere su Richter (altri libri sono disponibili).
- 1. Esiste un programma per convertire l'assembly in C++?
- 2. Come scaricare correttamente un AppDomain usando C#?
- 3. Esiste un batch di programma per Windows?
- 4. Ogni programma Objective C viene convertito in codice C?
- 5. Esiste un programma che offusca il codice sorgente C#?
- 6. Esiste un parser CSS per C#?
- 7. C++ DLL non scarica con AppDomain
- 8. Esiste un interprete per C?
- 9. Esiste un programma di installazione MinGW offline?
- 10. Dimensione massima stack per programma C/C +?
- 11. Esiste un programma di utilità Spy ++ per WPF?
- 12. Come posso registrare ogni metodo chiamato in un programma Ruby?
- 13. Esiste un programma (o uno script sed) che rimuoverà una funzione da un file C?
- 14. Esiste un po 'di tempo per ogni ciclo in Java?
- 15. SecurityException in Sandbox AppDomain
- 16. Esegui un altro programma in Linux da un programma C++
- 17. Programma C per convertire Dollar in Rupee
- 18. C#: modifica dei valori per ogni elemento di un array
- 19. Esiste un controllo di stile per C++?
- 20. Esiste un equivalente in C++ per getcwd?
- 21. Esiste un equivalente JavaScript per C# 'params'?
- 22. Esiste un repository di libreria per C?
- 23. Esiste un compilatore come servizio per C++?
- 24. Esiste un REPL per la programmazione C?
- 25. Esiste un compilatore C portatile per Windows?
- 26. Esiste un programma che può aiutare a capire un altro programma?
- 27. Strumenti per scoprire cosa sta rallentando un programma C?
- 28. AppDomain è equivalente a un processo per codice .NET?
- 29. Come precaricare tutti gli assembly distribuiti per un AppDomain
- 30. Simulation AppDomain recycle