28 votes

Quel est exactement le recyclage Appdomain

Je suis à essayer de comprendre ce qui est exactement le domaine d'application de recyclage? Lorsque une page aspx est demandé pour la première fois à partir d'une application DotNet, je comprends qu'un domaine d'application pour cette application est créée, et exige que les assemblages sont chargés dans ce domaine d'application, et la demande sera servi. Maintenant, si le web.fichier de configuration ou le contenu du dossier bin, etc sont modifiés, le domaine d'application va être "recyclés". Ma question est, à la fin du processus de recyclage, le domaine d'application à être chargé avec les assemblées et prêtes à servir la demande suivante? ou une page doit être demandée pour déclencher les assemblées à charger?.

43voto

Marcos Silvestri Points 286

Eh bien, je pense que le thread a été d'obtenir en douceur à une conclusion définitive, mais à la fin, il en était autrement.

Je vais essayer de répondre à la question d'après ma compréhension et mon levearing ce que je viens de lire sur d'autres sites web.

Tout d'abord, j'ai moi-même essayer d'éviter le terme de recyclage, autres que pour les Pools d'Applications car cela peut rendre quelqu'un confus. Maintenant, arriver à des processus, des piscines et des AppDomain, je vois le tableau comme suit:

Un Pool d'Applications est, en somme, une région de la mémoire qui est maintenue en place et en cours d'exécution par un processus appelé W3WP.exe aka Processus de travail. Le recyclage d'un Pool d'Applications à-dire d'amener le processus vers le bas, de l'éliminer de la mémoire et à l'origine d'une marque de nouveaux Processus de travail, avec une nouvelle assignation de l'IDENTIFIANT du processus.

Concernant les Domaines d'Application, je le vois comme des sous-ensembles de régions de la mémoire, à l'intérieur de ladite région qui joue le rôle d'un conteneur. En d'autres termes, le processus de la mémoire, de la W3WP.exe dans ce cas, est une macro-région de mémoire pour les applications qui stocke sous-ensemble des régions, appelées Domaines d'Application. Ceci dit, les processus en mémoire peut stocker les différents Domaines d'Application, un pour chaque application qui est affecté à exécuter à l'intérieur d'un Pool d'Applications.

Quand il s'agit de recyclage, comme j'ai dit, c'est quelque chose que je me réserve uniquement pour les Pools d'Applications. Pour les domaines d'application, je préfère utiliser le terme de "redémarrer", afin d'éviter une idée fausse. Sur cette base, le redémarrage d'un domaine d'application à partir de plus de adonné application avec les nouveaux paramètres, tels que l'actualisation de la configuration existante. Qui se passe à l'intérieur des limites de la sous-région de la mémoire, appelé domaine d'application, qui en fin de compte se trouve dans le processus associé à un Pool d'Applications. Ces nouveaux paramètres peuvent venir à partir de fichiers tels que

web.config, de la machine.config, mondiale.asax, Bin, App_Code,

et il peut y en avoir d'autres.

Domaine d'application sont isolés les uns des autres, ce qui fait sens total. Si pas, si les modifications apportées à un site web.config, disons, de l'application 1, retourné, recyclage de la piscine, toutes les autres applications affectées à cette piscine serait d'obtenir redémarré, ce n'était certainement pas désiré par Microsoft et par personne d'autre.

Résumer mon point de vue,

  • Processus (W3WP.exe)
    • Domaine d'application 1
    • Domaine d'application 2
    • Domaine d'application 3
    • Domaine d'application n

n = le nombre d'applications affectées à l'Application de la Piscine géré par l'W3WP.exe

  • Les processus sont la mémoire des régions isolées l'une de l'autre
  • Domaines d'application sont submemory régions isolées l'une de l'autre, dans le même processus
  • Mondial des paramètres IIS changements peuvent nécessiter l'Application de la Piscine recycler (le meurtre et le démarrage d'un nouveau Processus de travail, W3WP.exe)
  • L'échelle de l'Application de modifier les paramètres de domaines d'application préoccupations, et ils peuvent obtenir redémarré après des modifications de certains fichiers spécifiques telles que celles mentionnées ci-dessus

Pour de plus amples informations, je vous recommande:

http://blogs.msdn.com/b/david.wang/archive/2006/03/12/thoughts-on-iis-configuration-changes-and-when-it-takes-effect.aspx

Quelles sont les causes d'un pool d'applications IIS à recycler?

http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Ce qui concerne le Brésil!

4voto

MartinHN Points 8587

Jetez un oeil à ce - qui pourraient l'expliquer:

http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-2D00-domaine d'application-recycles_2C00_-plus-commun-que-avant.aspx#440333

En général. Qu'est ce qu'on appelle le "premier coup" sur un ASP.NET Site web est généralement de prendre plus de temps, en raison de la compilation, et la création d'un domaine d'application.

Chaque fois que vous déployez un site, assurez-vous d'utiliser le "Publier le Site" fonction dans Visual Studio, pré-compiler votre site web. Ensuite, le "premier coup" pénalité est réduite. Et n'oubliez pas de régler la configuration de Libération, et pas de Débogage!

1voto

Cory Foy Points 5181

Recycler arrête le processus d'hébergement le domaine d'application. Vous remarquerez que le PID changements lorsque vous recycler.

Le déchargement de la AppDomin simplement décharge toutes les assemblées dans le domaine d'application, qui peuvent ensuite être réutilisés.

La chose importante à retenir est que, une fois que le CLR est chargé dans un processus, il ne peut pas être supprimé. Donc, si vous avez besoin de faire quelque chose dès que le CLR est chargé, puis il suffit de décharger le domaine d'application ne va pas aider, car le CLR ne sera pas rechargé.

Également pas qu'IIS n'est pas le seul processus qui peut accueillir le domaine d'application - tout processus peut, et vous n'avez pas toujours envie de tuer tout le processus juste pour décharger vos assemblées.

0voto

Will Points 76760

Si vos pages sont "modifiables", ils doivent être compilés avant de l'utiliser. Cela signifie que, oui, à la première demande les assemblées sont chargés, compilé et mis à disposition pour accéder aux. Chaque fois que ces fichiers sont modifiés (même certains virus peuvent déclencher ce problème en modifiant la date de modification des fichiers!), le domaine d'application sont recyclés.

Vous pouvez configurer votre application web pour ne pas être mis à jour. Tout est compilé dans des Dll, et vous ne verrez pas tout .ASPX ou .CS fichiers dans le répertoire virtuel. Il rend votre code plus difficile à mettre à jour (besoin de mettre un peu de texte supplémentaire sur votre page web? Recompiler le temps!), mais il augmente la disponibilité de votre application web.

Toutefois, cela ne l'empêchera pas de votre application web et d'être recyclé si l'un des fichiers sont modifiés. Par exemple, si vous modifiez le web.config, votre domaine d'application recycler, même si son compilé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X