Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

ASP.NET Grundlagen Teil 1: Ein Blick hinter die Kulisse

Dies ist der Beginn der Artikelserie "ASP.NET Grundlagen" mit folgenden Teilen:

ASP.NET bietet viele Features / Eigenheiten an, die auch in anderen Webtechnologien zu finden sind.
Darüber hinaus auch solche, die auf der Technologie selber oder dem Webserver (Meist IIS) aufgebaut sind.

Ablauf und Funktionsweise von ASP.NET betrachtet

Ein normaler Ablauf beim Aufruf einer Seite, dem Anklicken eines Links oder dem abschicken eines Formulars ist zwischen Client und Server bei allen Webtechnologien gleich.
Er unterscheidet sich erst ab dem Zeitpunkt wo die Verarbeitung auf dem Server anfängt. Die Ausgabe ist bei allen Technologien schlussendlich auch gleich.

  1. Benutzer ruft per Webbrowser eine Webseite auf, klickt einen Link an oder sendet ein Formular ab
  2. Beim normalen Abruf - wie das auch bei einem Link der Fall ist - wird ein GET-Request an den Server gesendet, es werden also Daten angefordert und ggf. Parameter über die Url mit übergeben (GET-Parameter)
  3. Bei einem Abruf über ein Formular (Egal ob durch einen Button manuell oder indirekt über Javascript abgeschickt), wird ein POST-Request zum Server gesendet und ggf. Parameter über die Url mit übergeben (GET-Parameter) und zusätzlich Formulardaten zum Server geschickt (POST-Parameter), und bei einem Datei-Upload wird die Datei binär (multipart/form-data) innerhalb des POST-Requests mitgeschickt.

Ungefähr so kann man sich die Anforderung vorstellen.
Wenn ein statische Datei angefordert wird (Bspw. ein Bild, eine Zip-Datei, ....) übernimmt  im Normalfall der Webserver den Request und sendet als Response jeweils die Datei direkt zum Client - sowas nennt man dann "Download" :-).

Wenn allerdings die Dateiendung oder der angeforderte Pfad (Im Fachchargon die Resource) auf dem Webserver mit ASP.NET verknüpft ist, übernimmt ASP.NET die Verarbeitung des Requests.
Es werden die nötigen Objekte instanziiert (HttpContext, Page / HttpHandler, ...) die benötigt werden um mit ASP.NET arbeiten zu können.
All diese Objekte (Ausgenommen Applikationsobjekte) leben _nur_ vom Anfang der Verarbeitung bis zum Senden der Response, danach werden sie zerstört.

ASP.NET benutzt diese Objekte und mithilfe dem manuell geschrieben Code geschieht die Verarbeitung.
Intern läuft eine Reihenfolge von Events / Methodenaufrufen ab, was wir unter dem ASP.NET Lifecycle verstehen.
Innerhalb des selber geschrieben Codes (Page_Load, etc....) kann auf die - für den aktuellen Request - erstellten Objekte zugegriffen werden, so findet sich die GET-Parameter in "Request.QueryString[<Key>]" wieder und die POST-Parameter unter "Request.Form[<Key>]. (Siehe dazu aber auch Die alten Bekannten - Response.Write() und Request.Form[])

Mithilfe des ASP.NET-Frameworks wird das abrufen und senden von Parametern auf einer höheren Ebene abstrahiert, bspw. funktioniert sowas:


TextBox txtTest = new TextBox();
txtTest.ID = "txtTest";
placeHolder.Controls.Add(txtTest);
string text;

if(this.IsPostBack) {
    text = txtTest.Text;
}

Im Hintergrund läuft das automatisiert von ASP.NET ungefähr so ab:


TextBox txtTest = new TextBox();
txtTest.ID = "txtTest";
placeHolder.Controls.Add(txtTest);
string text;

if(this.IsPostBack) {
    text = this.Request.Form[txtTest.UniqueID];
}

Natürlich wird nicht genau so ein Code im Hintergrund arbeiten, aber etwas ähnliches.
Also unter der Haube von ASP.NET steckt ein wenig "Low Level" und ASP.NET abstrahiert das - vorallem durch Controls - sehr gut.

Schlussendlich wird das Resultat (Response) von ASP.NET zum Client geschickt (Page rendert rekursiv Kind-Controls / HttpHandler schickt Datei, etc...) und die ganze Geschichte fängt wieder von vorne an.

Nun, was fällt auf?

Genau: Wir haben eine komplette Statuslosigkeit.

Im nächsten Teil der Artikelserie geht es darum, was es für Möglichkeiten gibt mit der Statuslosigkeit umzugehen.

Veröffentlicht Sonntag, 14. September 2008 23:19 von Peter Bucher
Abgelegt unter: , ,

Kommentare

# Peter Bucher : ASP.NET Grundlagen Teil 2: Tsch&#252;ss Statuslosigkeit

# ASP.NET und dann war da noch was…

Ach ja. Es gab damals noch so was wie HTML, CSS und JavaScript, aber das ist ja heutzutage blöd, schließlich

Donnerstag, 12. März 2009 15:43 by Jürgen Gutsch
Anonyme Kommentare sind nicht zugelassen