Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webservice mit Datenbank (https://www.delphipraxis.net/173217-webservice-mit-datenbank.html)

dARKeAGLE 13. Feb 2013 08:15

Webservice mit Datenbank
 
Hallo Zusammen,

ich hätte eine Frage bezüglich eines Webservice (CGI-Bin und ISAPI), welcher mit einer Datenbank kommuniziert.

Die Anfragen an den Webservice funktionieren, doch leider wird bei jeder Anfrage an den Webservice die Datenbankverbindung neuaufgebaut und am Ende wieder abgebaut.

Auf dem WebModul habe ich die Komponente "TSQLConnection", welche ich im OnCreate mit der Datenbank verbinde. Mit ist es klar, dass es daran liegt. aber eine andere Möglichkeit habe ich bisher nicht gefunden.

Gibt es eine Möglichkeit die Datenbankverbindung geöffnet zu lassen, solange die Session aktiv ist?


Viele Grüße

Christian

CCRDude 13. Feb 2013 08:27

AW: Webservice mit Datenbank
 
Ohne jetzt Deine Implementierungsdetails zu kennen - so ein Webservice kann ja parallel angefragt werden, und eine Datenbankverbindung von mehreren Threads aus gleichzeitig zu verwenden scheint mir kein guter Plan zu sein.

Eine mögliche Vorgehensweise wäre ein Pool von Verbindungen, von dem Du jeweils anforderst und der sicherstellt, dass diese nicht andeweitig verwendet wird. Ob und wieweit das klappt, hängt natürlich auch von der Datenbank ab (erlaubt die es überhaupt, Verbindungen auf nen anderen Thread zu verschieben?).

mjustin 13. Feb 2013 14:09

AW: Webservice mit Datenbank
 
Handelt es sich um ein "HTTPApp.TWebModule"? Dann gilt vermutlich dieses hier:

Zitat:

"Das von Ihnen zur Entwurfszeit konfigurierte Web-Modul stellt eine Vorlage dar. In ISAPI- und NSAPI-Anwendungen spaltet jede Anforderungsbotschaft einen eigenen Thread ab. Für jeden Thread wird dynamisch eine separate Instanz des Web-Moduls und dessen Inhalt erzeugt."
http://docwiki.embarcadero.com/RADSt.../Das_Web-Modul

Somit ist es "by design" für jeden HTTP Request immer ein neues WebModule, das auch jeweils eine neue Instanz der Datenbankobjekte auf dem WebModule erzeugt.

Die Lösung zur Verbesserung der Antwortzeit ist (wie schon vorgeschlagen wurde) ein Connection-Pool.

Update: http://docwiki.embarcadero.com/RADSt...inzuf%C3%BCgen beschreibt einen Workaround, aber TSession scheint BDE spezifisch zu sein: http://docwiki.embarcadero.com/RADSt...sion_verwalten


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz