Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

Persistente DB-Verbindung

Letzter Beitrag 01-24-2007 15:16 von Cord Worthmann. 4 Antworten.
Seite 1 von 1 (5 Treffer)
Beiträge sortieren: Zurück Weiter
  • 01-19-2007 11:41

    Persistente DB-Verbindung

    hallo,

    habe da im WWW schon viel gesucht zum Thema "Wie realisiert man eine persistente Datenbankverbindung unter ASP.NET", konnte aber bis dato noch nichts sinnvolles finden. Ein Kollege von mir meinte, er würde in den WinForms die Verbindungsinformation immer ans nächste Element weiterreichen, aber sowas geht ja bei ASP.NET nicht unbedingt.

    Worum gehts konkret: Ich arbeite z.Z. an einem Online-Shop- und Katalog-System in ASP.NET und C#. Darin werden u.a. Bilder und RTF-Texte aus der Datenbank ausgelesen (und im letzteren Fall automatisch nach HTML konvertiert). Der Bildausgabe-Part ist komplett in C# geschrieben, da auf ASP.NET-Seite (also der aspx-Datei) nur noch die Ausgabe erfolgt und somit keinerlei störenden HTML-Elemente vorhanden sein dürfen (ist ja logisch - sonst macht der Browser nicht mit!).

    Dickes Problem nun: Wenn ich etwa in einer Unterkategorie die Bilder anzeigen lasse (und wenns nur 9 Stück sind), bekomme ich lokal nur manchmal, online auf dem Testserver aber fast regelmäßig Timeouts, Verbindungsabbrüche und sonstige damit verbundenen Fehlermeldungen.

    Ich und angesprochener Kollege haben daran die letzten Tage gearbeitet, so dass nun möglichst nur eine einzige Verbindung einmal aufgemacht und dann wieder geschloßen wird. Aber das macht dann immer noch mindestens 9 + 1 Einzelverbindungen pro User - bei 10 Usern auf der Seite haben wir also 100 Einzelverbindungen auf einen Schlag. Das ist natürlich nicht im Sinne des Erfinders.

    Unter PHP gibt es sogenannte persistente Datenbankverbindungen, dabei wird eine Verbindung einmalig aufgebaut und bleibt erhalten, bis sie explizit geschlossen wird - auch über Dateiweiterleitungen etc. hinaus. Leider gibt es sowas offenbar nicht unter .NET, zumindest ist mir nichts darüber bekannt.

    Weiß hier jemanden einen guten Ansatz dafür, vielleicht ein Tutorial oder Beispiel?

    Danke schon mal im Voraus,
    cu, w0lf.

    • IP-Adresse ist Registriert
  • 01-19-2007 12:01 Antwort zu

    AW: Persistente DB-Verbindung

    Ganz kurz und knapp: du hast nur einen bestimmten Pool an möglichen Connections zur Verfügung, weshalb es keinen Sinn macht per Session eine Connection komplett offen zu halten. Konsequenz: Connections wenn du sie brauchst öffnen, Daten so effizient wie möglich rausholen und anschließend das Objekt wieder schließen. Ob du das nun 5 oder 15x per Request machst wirst du nicht bemerken, es sei denn deine SQL-Abfragen sind jeweils sehr aufwändig - aber dann würde ich eher überlegen die zu optimieren. Und Caching nicht vergessen ...
    • IP-Adresse ist Registriert
  • 01-19-2007 17:26 Antwort zu

    AW: Persistente DB-Verbindung

    Und wie übergebe ich dem neu aufgerufenen Progrämmchen die Information: Dort besteht eine Verbindung => weiternutzen?

    Gibt es da sowas wie eine ID, die ich immer weiterreiche, z.B. per Session?

    cu, w0lf.
     

    Abgelegt unter: , ,
    • IP-Adresse ist Registriert
  • 01-19-2007 20:27 Antwort zu

    AW: Persistente DB-Verbindung

    Gar nicht. Du öffnest jedes Mal eine neue Connection und schließt sie sofort wieder.
    • IP-Adresse ist Registriert
  • 01-24-2007 15:16 Antwort zu

    • Cord Worthmann
    • Top 150 Mitwirkender
    • Registriert am 01-06-2007
    • Rotenburg, Niedersachsen, Deutschland
    • Beiträge 11

    AW: Persistente DB-Verbindung

    Genau!

    Hinzukommt, dass das unter NETv2.0 verbesserte Pooling im Normalfall genau eine Verbindung für die gesamte Anwendung verwendet, die automatisch eine gewisse Lebensdauer hat (regelt alles das Pooling) - Öffnen und Schliessen der Verbindung bewirkt dann nichts ausser der Zerstörung des Connection-Objekts, wenn zu dem Zeitpunkt die Verbindung auch gerade einem oder mehreren anderen Vorgängen innerhalb der Anwendung zur Verfügung steht.

     
    Grüsse
    Cord
     

    • IP-Adresse ist Registriert
Seite 1 von 1 (5 Treffer)