Frage

Der folgende Text ist aus dem Buch lese ich, ‚MCTS Paced Training Kit (Exam 70-515) Web-Anwendungen Entwicklung mit ASP.NET 4" . Es gibt den Überblick über den Anwendungslebenszyklus.

  1. Ein Benutzer macht zuerst eine Anforderung für eine Seite in Ihrer Website.
  2. Die Anforderung wird an die Verarbeitungspipeline geleitet, die nach vorn an die ASP.NET Laufzeit.
  3. Die ASP.NET-Laufzeit erstellt eine Instanz der Klasse Applicationmanager; diese Klasse-Instanz stellt das .NET Framework-Domäne, die verwendet werden Anfragen für Ihre Anwendung auszuführen. Eine Anwendungsdomäne globale Variablen aus anderen Anwendungen isoliert und erlaubt jede Anwendung zum Laden und Entladen separat, je nach Bedarf.
  4. Nachdem die Anwendungsdomäne erstellt wurde, eine Instanz der Klasse Hostingenvironment erstellt. Diese Klasse ermöglicht den Zugriff auf Elemente in der Hosting-Umgebung, wie Verzeichnisordner.
  5. ASP.NET erstellt Instanzen der Kernobjekte, die verwendet werden, um die Anforderung zu verarbeiten. Dazu gehören Httpcontext, Httprequest und Httpresponse-Objekte.
  6. ASP.NET erstellt eine Instanz der Httpapplication-Klasse (oder eine Instanz wiederverwendet wird). Diese Klasse ist auch die Basisklasse für eine Global.asax-Datei einer Website. Sie können diese Klasse zu Trap-Ereignisse verwenden, die passieren, wenn die Anwendung startet oder stoppt. Wenn ASP.NET eine Instanz von Httpapplication schafft, schafft es auch die Module für die Anwendung konfiguriert, wie die Session.
  7. Schließlich fordern ASP.NET Prozesse durch die Httpapplication pipleline. Diese Pipeline enthält auch eine Reihe von Veranstaltungen für Anfragen, Mapping URLs validieren, den Zugriff auf den Cache und vieles mehr.

Das Buch dann ein Beispiel für die Verwendung der Datei Global.asax demonstriert:

   <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 Anwendung? Was ist der Unterschied zwischen Sitzung und Anwendungsebene? Ich bin ziemlich verwirrt darüber, wie diese verwaltet wird. Ich dachte, dass Application-Level-Klassen „saßen oben auf“ ein AppDomain-Objekt, und die AppDomain enthielt für diesen Benutzer zu dieser Session spezifische Informationen. Könnte jemand bitte erklären, wie IIS applicaiton Level-Klassen verwaltet, und wie ein Httpapplication Klasse sitzt unter einer AppDomain? Alles, was geschätzt wird.

War es hilfreich?

Lösung

Im Moment lebt außerhalb eines AppDomain so natürlich die HttpApplication innerhalb einer instanziiert werden muss.

Schritt 3 bis 6 passiert nur einmal im Leben Ihrer Anwendung. Wenn eine ApplicationManager Instanz erstellt wurde wont es wieder für die nächste Anforderung erstellt werden. Das gleiche gilt für HostingEnvironment und HttpApplication. Dies bedeutet, dass in der applikations Sammlung gespeicherten Werte werden dort bleiben für alle späteren Anforderungen während der Lebensdauer der Anwendung zu erhalten.

Es gibt eine AppDomain pro Anwendung, nicht pro Sitzung oder pro Anfrage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top