Daten-Zugriff in ASP .NET Anwendungen verbessern

Was stimmt nicht mit dem DataSet?

Ich behaupte nicht, dass es etwas Grundlegendes sei, das mit dem DataSet Objekt nicht stimmt. Aber es ist wie mit jedem anderen Tool auch – man muss verstehen, wie man es richtig einsetzt. Es ist zwar ein nützliches Tool für Windows Forms Anwendungen, doch für Web Application Development ist es nicht ganz so nutzbringend.

Schauen wir uns ein einfaches Beispiel an. Angenommen, man verwendet ein DataSet, um eine Liste von 1.000 Produkten auszugeben, die in einem DataGrid in einem Formular dargestellt werden soll. Da man die Daten später eventuell sortieren oder filtern möchte, entscheidet man sich dafür, das DataSet in einer Sitzungsvariablen zu speichern. Da man es nicht besser weiß, lässt man auch die Standard-Seite ViewState aktiviert. Surft nun ein User auf diese Seite, befinden sich drei Kopien der Daten irgendwo im Speicher. Gespeichert in einer Session-Level-Variablen befinden sie sich auf dem Server. Im ViewState befinden sie sich als gespeicherter Inhalt des DataGrid. Und in Form von HTML-Tabellenanweisungen, welche die Tabelle rendern, befinden sie sich im gerenderten HTML-Strom. Nun braucht man nur den Speicherplatz des Servers mit der Anzahl der User zu multiplizieren, um die Auswirkungen auf den Server-Speicher abzuschätzen. Ebenso braucht man nur die beiden Kopien der Daten mit der Anzahl der User zu multiplizieren, um einen Eindruck von den Auswirkungen auf die Bandbreiten-Ausnutzung zu erhalten. Auf einer Seite mit starkem Traffic kann man also einen Server und seine verfügbare Netzwerk-Bandbreite schnell überlasten.

Die Antwort: Der DataReader

Wenn er auch nicht ganz so „sexy“ ist, bietet der DataReader für eine Web-Applikation doch viel mehr Funktionalität. Da der Cursor des DataSet-Objekts nur in einer vorwärts gerichteten, nur auf Lesen der Daten abzielenden Weise über die Ergebnisse einer Abfrage iteriert, arbeitet er sehr schnell. Außerdem hält der DataReader immer nur den jeweils aktuellen Eintrag im Speicher, nie das gesamte Suchergebnis. Das DataSet-Objekt kann an die ASP .NET Server Controls gebunden werden (wie das DataGrid). Wichtiger noch: Server-Ressourcen und Verbindungs-Ressourcen werden freigesetzt, sobald sie durchlaufen sind. Ist es von Bedeutung, dass die Daten immer so frisch wie möglich sind, sollte man seine Daten-gebundenen Seiten mit DataReaders aufbauen, die das Abrufen der Daten aus einer zugrunde liegenden Datenbank übernehmen.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Daten-Zugriff in ASP .NET Anwendungen verbessern

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *