2012-07-06 4 views
5

Ich habe an einer Webanwendung in ASP.net gearbeitet. Meine Anwendung hat mehrere Seiten und alle müssen Tabellen anzeigen, die von einer Datenbank ausgefüllt werden. Im Moment mache ich auf jeder Seite eine Datenbankverbindung, führe die spezifische Abfrage für diese Seite aus und schließe die Datenbankverbindung. Dies geschieht jedes Mal, wenn der Benutzer auf einen Link klickt, um zu einer neuen Seite zu gelangen, oder auf ein Formular-Steuerelement wie die Grid-Seite klickt.Good Practice zum Öffnen/Schließen von Verbindungen in einer asp.net-Anwendung?

Ich fragte mich, ob dies eine Katastrophe aus der Sicht der Leistung war. Gibt es einen besseren Weg, dies zu tun?

+0

Wenn Sie odp.net verwenden, verwenden Sie standardmäßig das Verbindungs-Pooling, siehe http://docs.oracle.com/html/E10927_01/featConnecting.htm#i1006393 – tbone

Antwort

9

Fast überall sollten Datenbankverbindungen wie folgt behandelt werden: So spät wie möglich öffnen und so bald wie möglich schließen. Öffne und schließe für mehrere Abfragen/Updates ... glaube nicht, dass es nichts spart, wenn du es offen lässt. Weil Verbindungs-Pooling im Allgemeinen eine sehr gute Arbeit für Sie von der Verwaltung der Verbindungen leistet.

Es ist vollkommen in Ordnung, ein paar/wenige Verbindungen bei der Produktion einer einzelnen Seite geöffnet/geschlossen zu haben. Der Versuch, eine einzelne Verbindung zwischen den Seitenaufrufen offen zu halten, wäre ziemlich schlecht ... tun Sie das unter keinen Umständen.

Grundsätzlich, mit Verbindungspooling (standardmäßig für fast alle Anbieter aktiviert), "schließt" eine Verbindung tatsächlich nur zurück in den Pool, um wiederverwendet zu werden. Der Versuch, es offen zu halten, wird wertvolle Verbindungen knüpfen.

3

Genau so wollen Sie es haben. Eine Datenbankverbindung sollte nur bei Bedarf geöffnet und unmittelbar nach dem Gebrauch geschlossen werden.

Was Sie sich ansehen sollten, besonders wenn die Leistung ein großes Problem für Sie darstellt, ist caching. Möglicherweise möchten Sie die gesamte Seite oder nur Teile einer Seite oder nur die Daten, die Sie auf Ihren Seiten anzeigen möchten, zwischenspeichern. Sie werden eine Menge Datenbank speichern diese Art und Weise stellt, aber Sie müssten jetzt andere Dinge berücksichtigen, wie wenn Sie den Cache, Caching für verschiedene Benutzer zu aktualisieren, usw.

3

Von MSDN - Best Practices in ADO.Net

Hochleistungs-Anwendungen halten Verbindungen zur Datenquelle in Verwendung für eine minimale Menge an Zeit, sowie nutzen leistungssteigernde Technologie wie Verbindungspooling.

Was Sie tun, ist völlig in Ordnung, die Verbindung zu öffnen, um die Abfrage auszuführen und danach zu schließen. Wenn Sie die Verbindung für einen längeren Zeitraum halten und mehrere Personen auf Ihre Anwendung zugreifen, besteht die Möglichkeit, dass Sie das Verbindungslimit, das normalerweise für eine Datenbank festgelegt ist, überschreiten.

2

Das Verknüpfen von DB-Verbindungen mit Back-End-Code ist eine schlechte Praxis.Während Sie lernen, empfehle ich Ihnen, Webdienste zu verwenden, um mit der Benutzeroberfläche zu interagieren, anstatt Ihre Dateninteraktionen mit der Benutzeroberfläche zu verknüpfen.

Wie UI (Aspx Seite) >> BLL (Business Logic Layer) >> DAL (Data Access Layer)

auch versuchen, die 'mit' Schlüsselwort in DAL mit und entsorgen Verbindungen und alle nach DB Interaktion

+0

Wären Sie so freundlich, explizit anzugeben, welche Themen ich ausführen soll mehr lesen auf? –

Verwandte Themen