JaredPar la réponse est bonne, sauf qu'il n'a pas de noter la raison d'être pour les domaines d'application - qui est ce que vous pouvez DÉCHARGER d'une Assemblée par le déchargement de son domaine d'application. Si vous êtes un long processus du système d'exploitation, et vous vous attendez à avoir à charger , puis plus tard, déchargement des assemblages pour quelque raison que ce soit vous avez besoin d'un domaine d'application. L'exemple prototypique est ici ASP.NET qui charge le code de l'application assemblées à la demande et ensuite peut se décharger plus tard, lorsque les applications ne sont plus utilisés activement.
Le coût que vous payez pour la capacité à décharger, c'est que l'indépendance - vous besoin de communiquer à travers le domaine d'application de limite, ne Peuvent pas faire un simple appel de méthode. Vous devez gérer le domaine d'application du cycle de vie. Etc.
Si vous avez besoin de charger dynamiquement des Assemblées et ne pensez pas que vous aurez besoin de les décharger au cours de la durée de vie d'un processus unique, alors vous avez probablement n'avez pas besoin d'exécuter de multiples domaines d'application. Un bon exemple pourrait être riche d'une application qui prend en charge un modèle de plug-in, où il renifle hors plug-in assemblées dans un "etc" directory et les charges 'em all. Toutefois, si le plug-in appels de modèle pour le déchargement, les plugins ... bien.
Il y a outlyer scénarios. Comme, supposons que vous voulez charger les 2 versions différentes d'une Assemblée en même temps. Vous pouvez exécuter dans les pièges, si vous n'avez pas les séparer avec les domaines d'application. Mais qui sera assez rare.
Le scénario de base qui justifie l'existence de domaines d'application, c'est le long processus en cours d'exécution qui doit être en mesure de décharger les assemblées.
Bien sûr, les applications pourraient s'appuyer sur les processus du système d'exploitation lorsque vous souhaitez vous décharger d'une assemblée. En d'autres termes, vous pouvez avoir 3 ou 4 en coopérant processus en cours d'exécution, chacun avec son propre ensemble d'ensembles, et quand vous voulez vous décharger d'une assemblée, vient de fermer le processus qui héberge cette assemblée. Mais le domaine d'application offre une plus grande perf mécanisme pour le faire, sans nécessiter le processus de démarrage et d'arrêt ou de la croix-processus de comms, qui est plus lourd encore que la croix-domaine d'application comms décrit précédemment. Je veux dire, c'est encore l'accès distant mais il est plus lent et plus le changement de contexte.