J'essaye de les dire avec d'autres mots.
Dans un serveur, vous pouvez avoir de nombreux sites asp.net qui fonctionnent ensemble. Chaque site est un domaine d'application .
Vous devez attribuer à chacun d'eux un pool d'applications . De nombreux domaines d'application (sites) peuvent avoir le même pool d'applications, et comme ils ont le même pool d'applications, ils s'exécutent sous les mêmes processus et sous le même compte - et ils ont les mêmes paramètres du pool. Si ce pool redémarre, tous les sites sous ces pools redémarrent.
Désormais, chaque pool peut avoir un ou plusieurs processus de travail . Chaque processus de travail est un programme différent qui exécute votre site, a ses seules variables statiques, ils différents démarrent des appels d'arrêt, etc. Les différents processus de travail ne communiquent pas ensemble, et le seul moyen d'échanger des données est à partir de fichiers communs ou d'une base de données commune. Si vous avez plusieurs processus de travail et que l'un d'entre eux effectue des calculs de longue durée, l'autre peut prendre soin de gérer les appels Internet et d'afficher le contenu.
Lorsque vous affectez plusieurs processus de travail à un seul pool, vous créez le jardin Web appelé et votre site est comme être exécuté à partir de plusieurs ordinateurs si un ordinateur est une machine de traitement.
Chaque processus de travail peut avoir plusieurs threads.
Comment le processus de travail plus vous affecte:
Lorsque vous avez un processus de travail, tout est plus simple, parmi votre application, toutes les variables statiques sont les mêmes et vous utilisez lock
pour les synchroniser.
Lorsque vous affectez plus d'un processus de travail, vous continuez à utiliser lock
pour les variables statiques, les variables statiques ne sont pas différentes parmi les nombreuses exécutions de votre site, et si vous avez une ressource commune (par exemple la création d'une vignette sur le disque) alors vous devez synchroniser votre processus de travail avec Mutex
.
Encore une note. Il semble que lorsque vous faites plus de processus de travail, vous pouvez avoir des chargements de page asynchrones plus fluides. Il y a un petit problème avec le gestionnaire de session d'asp.net qui verrouille tout le processus pour un chargement de page - c'est bon et pas bon, dépendez si vous le connaissez et le gérez - ou le changez.
Parlons donc d'un seul site avec de nombreux processus de travail. Ici, vous êtes confronté au problème avec lequel vous devez synchroniser votre changement de ressource commune Mutex
. Mais les pages / gestionnaires qui utilisent la session ne sont pas asynchrones car la session les verrouille. C'est bon pour commencer car vous évitez de faire vous-même cette synchronisation de nombreux points.
Quelques questions sur ce sujet:
Application Web bloquée lors du traitement d'une autre application Web sur le partage de la même session Les
appels jQuery Ajax au service Web semblent être synchrones Le
serveur ASP.NET ne traite pas les pages de manière asynchrone
Remplacement complet de la session ASP.Net
Maintenant, ce verrouillage de session n'affecte pas différents sites.
Parmi les différents sites, le processus le plus travaillé peut aider à ne pas bloquer l'autre site avec un processus de longue durée.
De plus, parmi différents sites, le plus de pools peut également aider, car chaque pool a au moins un processus travaillé, mais souvenez-vous et voyez par vous-même à l'aide de l'explorateur de processus, chaque processus de travail prend plus de mémoire sur votre ordinateur et un gros serveur avec 16G de mémoire et un serveur SQL ne peut pas avoir trop de processus de travail différents - par exemple sur un serveur avec 100 sites partagés, vous ne pouvez pas avoir 100 pools différents.
La signification pour les développeurs ASP.NET: pour rendre votre site Web évolutif, n'utilisez pas de session in-proc et n'utilisez pas de verrou de variable de classe statique pour la synchronisation.
la source
Oui, mais toutes les applications ne sont pas des sites Web. Vous pouvez avoir une application imbriquée sous un site Web.
Oui, chaque application doit avoir un processus de travail (pool d'applications), bien qu'un pool d'applications puisse serveur plusieurs applications. Une seule application Web peut être distribuée (jardin Web / ferme), ce qui signifie qu'elle s'exécutera dans plusieurs processus.
Chaque processus s'exécutera dans son propre domaine d'application (chaque pool d'applications est un domaine d'application distinct).
De MSDN.
Créez une application Web :
Pools d'applications :
la source
Depuis le lien source: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx
Le processus de travail est utilisé pour traiter la demande de l'application Web.
la source