Der folgende Text stammt aus dem Buch, das ich gerade lese: "MCTS Self-Paced Training Kit (Exam 70-515) Web Applications Development with ASP.NET 4". Er gibt einen Überblick über den Lebenszyklus von Anwendungen.
- Ein Benutzer stellt zunächst eine Anfrage für eine Seite Ihrer Website.
- Die Anforderung wird an die Verarbeitungspipeline weitergeleitet, die sie an die ASP.NET-Laufzeitumgebung weiterleitet.
- Die ASP.NET-Laufzeitumgebung erstellt eine Instanz der ApplicationManager-Klasse; diese Klasseninstanz stellt die .NET-Framework-Domäne dar, die zur Ausführung von Anforderungen für Ihre Anwendung verwendet wird. Eine Anwendungsdomäne isoliert globale Variablen von anderen Anwendungen und ermöglicht es jeder Anwendung, bei Bedarf separat zu laden und zu entladen.
- Nachdem die Anwendungsdomäne erstellt wurde, wird eine Instanz der Klasse HostingEnvironment erstellt. Diese Klasse ermöglicht den Zugriff auf Elemente innerhalb der Hosting-Umgebung, z. B. auf Verzeichnisordner.
- ASP.NET erstellt Instanzen der Kernobjekte, die für die Verarbeitung der Anforderung verwendet werden. Dazu gehören die Objekte HttpContext, HttpRequest und HttpResponse.
- ASP.NET erstellt eine Instanz der Klasse HttpApplication (oder eine Instanz wird wiederverwendet). Diese Klasse ist auch die Basisklasse für die Global.asax-Datei einer Website. Sie können diese Klasse verwenden, um Ereignisse abzufangen, die beim Starten oder Stoppen Ihrer Anwendung auftreten. Wenn ASP.NET eine Instanz von HttpApplication erstellt, werden auch die für die Anwendung konfigurierten Module erstellt, z. B. das SessionStateModule.
- Schließlich verarbeitet ASP.NET Anfragen über die HttpApplication-Pipeline. Diese Pipeline umfasst auch eine Reihe von Ereignissen für die Validierung von Anforderungen, die Zuordnung von URLs, den Zugriff auf den Cache und mehr.
Im Buch wird dann ein Beispiel für die Verwendung der Datei Global.asax gezeigt:
<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>
Wann beginnt eine Bewerbung? Was ist der Unterschied zwischen Sitzungs- und Anwendungsebene? Ich bin ziemlich verwirrt, wie das gehandhabt wird. Ich dachte, dass die Klassen der Anwendungsebene auf einem AppDomain-Objekt "sitzen" und die AppDomain Informationen enthält, die für diese Sitzung und diesen Benutzer spezifisch sind. Könnte mir bitte jemand erklären, wie IIS Klassen auf Anwendungsebene verwaltet und wie eine HttpApplication-Klasse unter einer AppDomain sitzt? Jeder Hinweis ist willkommen.