Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 11 Der Status von Seiten, Sitzungen und Applikationen
|  | 11.1 Versteckte Felder in Formularen nutzen
|  | 11.2 Der Status einer Seite: Viewstate
|  |  | 11.2.1 Eigene Daten im Viewstate speichern
|  |  | 11.2.2 Den Anzeigestatus ein- und ausschalten
|  | 11.3 Der Status einer Sitzung: Session
|  |  | 11.3.1 Die Klasse HttpSessionState
|  |  | 11.3.2 Wie ASP.NET die Probleme des klassischen ASP löst
|  |  | 11.3.3 Übertragung der Session-ID: Cookie oder URL
|  |  | 11.3.4 Den Sitzungsstatus ein- und ausschalten
|  |  | 11.3.5 Den Sitzungsstatus konfigurieren
|  |  | 11.3.6 Session-Ereignisse verwenden
|  |  | 11.3.7 Objekte mit Session-Scope einbinden
|  |  | 11.3.8 Instanzen eigener Klassen in den Sitzungsdaten speichern
|  | 11.4 Cookies verwenden
|  | 11.5 Der Status einer Anwendung: Application
|  |  | 11.5.1 Den Zugriff auf anwendungsweite Daten synchronisieren
|  |  | 11.5.2 Beschränkungen von Application-Variablen
## 11.5 Der Status einer Anwendung: Application Informationen, Daten und Objekte, die innerhalb einer gesamten Webanwendung verfügbar sein sollen, können Sie über den Status der Applikation verfügbar machen. In der Datei global.asax können Sie unter anderem mit den Prozeduren Application_OnStart und Application_OnEnd auf den Start und das Ende einer Anwendung reagieren. Eine Webanwendung startet, wenn die erste Seite aufgerufen wird. Wenn eine zentrale Konfigurationsdatei wie global.asax oder web.config verändert wurde, wird die Webanwendung beendet und neu gestartet. In der Prozedur Application_OnStart können Sie grundlegende Daten initialisieren, auf die Sie innerhalb der gesamten Applikation zugreifen müssen. Kapitel 14, Webanwendungen erstellen und konfigurieren, erläutert den Aufbau und die Verwendung der Datei global.asax ausführlich. An dieser Stelle sollen lediglich einige Grundlagen vorgestellt werden. ### 11.5.1 Den Zugriff auf anwendungsweite Daten synchronisieren Wenn Sie Variablen, die in der Datei global.asax angelegt werden, nicht nur auslesen, sondern innerhalb Ihrer Anwendung auch bearbeiten, dann müssen Sie den Zugriff auf diese anwendungsweiten Daten synchronisieren. Das zugrunde liegende Problem lässt sich am besten an einem Beispiel verdeutlichen. Angenommen, Sie möchten mit Hilfe einer Application-Variablen zählen, wie oft die Datei index01.aspx aufgerufen wurde. Hierfür stellen Sie die Application-Variable Application("indexCount") zur Verfügung. Das Szenario für Ihr Zählwerk stellen Sie sich so vor: Anwender A greift auf index01.aspx zu. Der Code in index01.aspx liest den Wert von Application("indexCount") aus, erhöht den Wert um 1 und schreibt den erhöhten Wert zurück. Später greift Anwender B ebenfalls auf index01.aspx zu, liest den erhöhten Wert aus, erhöht ihn und schreibt ihn zurück und so weiter. Ein Fehler tritt aber dann auf, wenn Anwender A auf index01.aspx zugreift, Application("indexCount") ausliest und dann Anwender B die Variable ausliest, noch bevor Anwender A den erhöhten Wert zurückschreiben konnte. In diesem Fall wird die Variable jeweils von x auf x+1 erhöht und x+1 wird zweimal zurückgeschrieben. Im Ergebnis wurde dabei ein Aufruf nicht gezählt. Um diesen Fehler zu vermeiden, müssen Sie so etwas wie einen künstlichen Flaschenhals anlegen. Dafür stellt die Klasse HttpApplicationState die Methoden Lock() und UnLock() zur Verfügung. Code zwischen Lock() und UnLock() wird immer am Stück ausgeführt, so dass dieses Problem nicht mehr auftauchen kann.
Achtung Die Methoden Lock() und UnLock() blockieren die gesamte Anwendung. Daher sollten sie nur möglichst selten benutzt werden und der Code zwischen Lock() und UnLock() sollte möglichst kurz sein
Der Code für dieses Beispiel könnte folgende Form haben. In global.asax initialisieren Sie in der Prozedur Application_OnStart() die Variable Application("indexCount") zunächst mit dem Wert 0.
    <%@ Application Language="VB" %>
    <script runat="server" >
    Protected Sub Application_OnStart ()
       Application("indexCount") = 0
    End Sub
    </script>
In index01.aspx realisieren Sie Ihr Zählwerk in der Prozedur Page_Load():
    <!-- index01.aspx -->
    <%@ Page Language="VB" Debug="True" Strict="True"  %>
    <script runat="server">
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       Dim anzahl As Integer
       Application.Lock()
          anzahl = CInt(Application("indexCount"))
          anzahl = anzahl + 1
          Application("indexCount") = anzahl
       Application.UnLock()
       ausgabe.innerHTML &= CStr(Application("indexCount"))

    End Sub
    </script>
    <html><head>
    <title>Test-Web</title>
    </head><body>
    <h1>Test-Web</h1>
    <p>Mein Test-Web</p>
    <p runat="server" id="ausgabe" >Anzahl: </p>
    </body></html>
Auslesen, Erhöhen und Zurückschreiben der Zählervariablen ist in Application.Lock() und Application.UnLock() eingeklammert. Weitere Details zur Klasse HttpApplicationState enthält Kapitel 14, Webanwendungen erstellen und konfigurieren. ### 11.5.2 Beschränkungen von Application-Variablen Abgesehen davon, dass sie wertvollen Hauptspeicher belegen, müssen Sie bei der Verwendung von Application-Variablen folgende Einschränkungen berücksichtigen:
| Application-Variablen werden nicht persistent gespeichert. Wenn der Webserver neu gestartet wird oder abstürzt, sind die Daten verloren.
| Application-Variablen stehen nur im Adressraum einer Maschine zur Verfügung. Sie sind nicht für Webgärten oder Webfarmen skalierbar. Ein Webgarten verwendet mehrere Prozessoren. Eine Webfarm besteht aus mehreren, voneinander unabhängigen Maschinen. Anders gesagt: Application-Variablen sind nicht skalierbar.
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de