Question

Le texte suivant est extrait du livre que je lis, « Self-Paced MCTS Kit de formation (examen 70-515) Développement d'applications Web avec ASP.NET 4" . Il donne la diminution des effectifs de l'application du cycle de vie.

  
      
  1. Un utilisateur d'abord une demande d'une page sur votre site.
  2.   
  3. La demande est acheminée vers le pipeline de traitement, qui transmet à l'environnement d'exécution ASP.NET.
  4.   
  5. Le temps d'exécution ASP.NET crée une instance de la classe ApplicationManager; cette instance de classe représente le domaine du framework .NET qui sera utilisé pour exécuter les demandes de votre application. Un domaine d'application isole les variables globales provenant d'autres applications et permet à chaque application à charger et décharger séparément, selon les besoins.
  6.   
  7. Une fois le domaine d'application a été créée, une instance de la classe HostingEnvironment est créée. Cette classe permet d'accéder aux éléments contenus dans l'environnement d'hébergement, comme les dossiers de répertoire.
  8.   
  9. ASP.NET crée des instances des objets de base qui seront utilisés pour traiter la demande. Cela comprend HttpContext, HttpRequest et objets HttpResponse.
  10.   
  11. ASP.NET crée une instance de la classe HttpApplication (ou une instance est réutilisée). Cette classe est la classe de base pour le fichier Global.asax d'un site. Vous pouvez utiliser cette classe pour intercepter les événements qui se produisent lorsque votre application démarre ou arrête. Lorsque ASP.NET crée une instance de HttpApplication, il crée également les modules configurés pour l'application, comme le SessionStateModule.
  12.   
  13. Enfin, les processus ASP.NET demande par la HttpApplication construction de ce pipeline. Ce pipeline comprend également un ensemble d'événements pour la validation des demandes, URL de mappage, l'accès au cache, et plus encore.
  14.   

Le livre a ensuite démontré un exemple d'utilisation du fichier Global.asax:

   <script runat="server">
void Application_Start(object sender, EventArgs e)
{
Application["UsersOnline"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["UsersOnline"] = (int)Application["UsersOnline"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["UsersOnline"] = (int)Application["UsersOnline"] - 1;
Application.UnLock();
}
</script>

Quand commence une application? Quelle est la différence entre la session et le niveau d'application? Je suis un peu confus sur la façon dont cela est géré. Je pensais que les classes de niveau d'application « assis au-dessus de » un objet AppDomain et l'AppDomain contenait spécifique de l'information à cette session pour cet utilisateur. Quelqu'un pourrait-il s'il vous plaît expliquer comment IIS gère les classes de niveau applicaiton, et comment une classe HttpApplication se trouve sous un AppDomain? Tout ce qui est apprécié.

Était-ce utile?

La solution

Rien ne vit en dehors d'un AppDomain si bien sûr le HttpApplication doit être instancié dans un.

Étape 3 à 6 ne se produit une fois dans la vie de votre application. Lorsqu'une instance de ApplicationManager a été créé il ne sera créé à nouveau pour la prochaine requête. La même chose est pour HostingEnvironment et HttpApplication. Cela signifie que les valeurs stockées dans l'application de collecte seront toujours là pour obtenir pour toutes les demandes ultérieures au cours de la durée de vie de l'application.

Il y a un AppDomain par application, et non par session ou par demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top