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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Adobe schließt neun kritische Lücken in Reader und Acrobat

Das jüngste Update bringt insgesamt zwölf Fixes. Schadcode lässt sich unter Umständen ohne Interaktion mit…

1 Tag ago

Fabrikautomatisierung: Siemens integriert SPS-Ebene

Eine softwarebasierte Workstation soll es Ingenieuren erlauben, sämtliche Steuerungen zentral zu verwalten. Pilotkunde ist Ford.

1 Tag ago

Ebury-Botnet infiziert 400.000 Linux-Server weltweit

Kryptodiebstahl und finanzieller Gewinn sind laut ESET-Forschungsbericht die vorrangigen neuen Ziele.

2 Tagen ago

Sicherheitslücken in Überwachungskameras und Video-Babyphones

Schwachstellen aus der ThroughTek Kaylay-IoT-Plattform. Dringend Update-Status der IoT-Geräte prüfen.

2 Tagen ago

AWS investiert Milliarden in Cloud-Standort Brandenburg

Fast acht Milliarden Euro fließen in die deutsche Region der AWS European Sovereign Cloud. Das…

2 Tagen ago

Hochsichere Software für Electronic Knee Boards der Bundeswehrpiloten

Im Rahmen der umfassenden Digitalisierung der Bundeswehr ersetzen Electronic Knee Boards die herkömmlichen Handbücher von…

2 Tagen ago