DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Re: Funktion zu bestimmten Tageszeiten aufrufen | Von: Klaus Holster ( 05.05.2004 10:53)

Der Zusammenhang der Komponenten ist in etwa folgender:

- Der IIS nimmt einen Request entgegen. Wenn er sich auf eine für ASP.NET registrierte Seite bezieht, wird der Request an einen ASP.NET Workerprozess weitergeleitet. Dieser stellt praktisch die ASP.NET Laufzeitumgebung dar. Er wird vom IIS verwaltet, und der IIS 6.0 hat dafür eine Reihe von Einstellmöglichkeiten: Unter anderem kann er den Workerprozess in regelmäßigen Intervallen prophylaktisch neu starten, was die Defaulteinstellung ist und gelegentlich zu Verwirrung führen kann. Sinnigerweise heißen die Workerprozesse im IIS "Application"

- Der Workerprozess verwaltet einen Pool von Application-Objekten. Er leitet den Request an eines dieser Application-Objekte weiter, das dann die Response-Seite erzeugt. Treffen während der Bearbeitung des ersten Requests weitere ein, so werden diese jeweils an eigene Application-Instanzen aus dem Pool weitergeleitet und jeweils in eigenen Threads bearbeitet. Mit diesem Mechanismus kann ASP.NET mehrere Seiten gleichzeitig bearbeiten.

- Application-Objekte können zur Laufzeit dynamisch erstellt und zerstört werden, je nachdem, wie der Server ausgelastet ist. Die Ereignisse Application.Start bzw. .End beziehen sich auf die Erstellung bzw. Zerstörung einer Instanz des Application-Objektes, nicht auf die Web-Anwendung insgesamt.

- Die Eigenschaften der Application-Objekte werden in der Global.asax definiert und können dort vom Entwickler beeinflusst werden.

- Innerhalb des ASP.NET Workerprozess gibt es unabhängig vom Application-Pool eine Datenstruktur vom Typ HttpApplicationState. Die heißt dummerweise auch "Application", ist aber etwas ganz anderes, nämlich ein Dictionary (wie die Session-Variable), in die man unter einem Key beliebige Objekte speichern kann.

- Der ApplicationState namens "Application" lebt unabhängig von den einzelnen Application-Instanzen aus dem Pool solange, wie der ASP.NET Workerprozess läuft. Das Application-Dictionary bildet damit den eigentlichen globalen Kontext der Webanwendung.

- Ein Objekt, das im Application-Dictionary enthalten ist, wird von der .NET CLR am Leben gehalten, selbst wenn das Application-Objekt(das aus dem Pool), in dessen Kontext es erzwugt wurde, längst wieder zerstört ist. Deshalb gehört die DB-Routine in das Application-Dictionary (und nicht in die Application, wie ich es in meinem ersten Beispiel fälschlicherweise gemacht hatte)

- Verwirrt ? Ich auch. Das ganze Konstrukt ist an sich sehr logisch aufgebaut und funktioniert auch wunderbar. Es ist aber wegen der Namensgebung nur durchschaubar, wenn man genau hinguckt. Die Application-Objekte aus dem Pool bilden eben nicht die Anwendung und die global.asax ist nicht so global wie der Name nahelegt. Und die Applications die der IIS verwaltet haben wiederum mit den Objekten, die sich "Application" nennen, nichts zu tun.

Klaus


Betreff Von Datum
Re: Funktion zu bestimmten Tageszeiten aufrufen
HI, dank dir für die ausführliche Erklärung, ich denke damit komme ich erstmal weiter...<br>vg<br>mb
G. Guest 05.05.2004 15:24

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Visual Studio 1 Magazin

© Copyright 2003 ppedv AG