AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webservice mit Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Webservice mit Datenbank

Ein Thema von dARKeAGLE · begonnen am 13. Feb 2013 · letzter Beitrag vom 13. Feb 2013
Antwort Antwort
dARKeAGLE

Registriert seit: 17. Jun 2011
Ort: Laupheim
13 Beiträge
 
Delphi XE Professional
 
#1

Webservice mit Datenbank

  Alt 13. Feb 2013, 08:15
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
Christian
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
677 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Webservice mit Datenbank

  Alt 13. Feb 2013, 08:27
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?).
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Webservice mit Datenbank

  Alt 13. Feb 2013, 14:09
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
Michael Justin

Geändert von mjustin (13. Feb 2013 um 14:21 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz