Die Performance von .NET verbessern

Die Lösung ist einfach: Jeder muss nur hinter sich aufräumen. Die ADO.NET-Verbindungsklasse enthält eine Close-Methode, um alle Verbindungen, die man geöffnet hat, ordnungsgemäß wieder zu schließen. Es ist hilfreich, sich die Open– und Close-Methoden als zusammengehörig vorzustellen. Hier ist eine kurze Übersicht über die Methoden, die man hinsichtlich des Aufräumens von Datenbankverbindungen in Betracht ziehen sollte:

  • Open: Eine Datenbankverbindung wird geöffnet.
  • Close: Eine Datenbankverbindung wird geschlossen.
  • Dispose: Alle Ressourcen, die mit der Datenbankverbindung zusammenhängen, werden freigegeben. Diese Methode erzwingt eine Garbage Collection für das jeweilige Objekt. Daher kann sie dafür benutzt werden, sicherzustellen, dass keine Ressourcen blockiert werden, nachdem die Verbindung benutzt wurde. Außerdem ruft die Dispose-Methode einer Verbindung automatisch deren Close-Methode auf. Dennoch kann man die Close-Methode immer vor Dispose aufrufen. Ein Ausnahmefehler wird ausgelöst, wenn die Dispose-Methode eines Objekts mehrmals aufgerufen wird.
  • State: Der Status des Verbindungsobjekts wird zurückgegeben. Man sollte prüfen, ob eine Verbindung offen ist, bevor man sie schließt.

Ein Beispiel zur Verwendung dieser Methoden ist der VB.NET-Code in Listing A unten. Listing B enthält den entsprechenden C#-Code. Man kann den Code als Overkill betrachten, aber alle Objekte in Verbindung mit der Datenbank werden geschlossen, gelöscht und wieder freigegeben, so dass für die automatische Garbage Collection bei dieser Vorgehensweise nichts übrig bleibt.

Listing A – VB.NET

Listing B – C#.NET

Eine verbreitete Lösung für das Problem offener Verbindungen besteht darin, nur ein einziges Verbindungsobjekt zu verwenden, das von jeder Methode, Klasse oder Subroutine, die die Datenbankoperationen erfordert, geöffnet und geschlossen wird. Die Objekte existieren häufig in einer Singleton-Datenbankzugriffsklasse, welche die Verbindungen zentral verwaltet.

Die Dateien nicht vergessen

Das Problem, dass Verbindungen nicht ordentlich geschlossen werden, ist nicht auf Datenbankzugriffe beschränkt. Es besteht auch, wenn mit Dateien oder irgendeiner Art von Stream-Objekten gearbeitet wird. Ein gutes Beispiel dafür ist das Schreiben von Daten in eine Textdatei. Der C#-Schnipsel in Listing C erzeugt eine Textdatei und fügt etwas Text ein.

Listing C – VB.NET

Wichtig ist, daran zu denken, die Datei zu schließen, sobald das Einfügen von Daten abgeschlossen ist. Selbst wenn es nicht extra erwähnt werden muss, das Problem schleicht sich auch in Produktionsapplikationen ein. Den entsprechenden VB.NET-Code zeigt Listing D.

Listing D – C#.NET

Darauf achten, was man tut

Die Tage von Speicherlecks und den damit verbundenen Problemen mit Microsoft-Technologien mögen schon lange vorbei sein, aber die .NET-Plattform ist nicht immun gegen Probleme. Ein verbreitetes Problem ist der Verbrauch von System- und Datenbankressourcen, weil Entwickler vergessen aufzuräumen, nachdem sie mit einer Datenbank gearbeitet haben. Entwickler können solche Probleme vermeiden, indem sie Objekte nach ihrer Nutzung wieder freigeben. Und die ADO.NET-Objekte enthalten Close– und Dispose-Methoden, um einem die Sache leichter zu machen.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

2 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

2 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

3 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

4 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

4 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

4 Tagen ago