Autor Beitrag
hamburg
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 07.11.05 21:25 
Hallo zusammen,

einen normalen WebService zu programmieren habe ich bereits geschafft Smile Jetzt soll jedoch eine Datenbankanbindung (per FireBird) stattfinden.

Kann mir jmd ein Beispiel geben? Mir fehlt leider jede Idee, bei Anfragen auf die IBSQL-Komponenten zuzugreifen - und bei jeder Anfrage eine neue Verbindung zur Datenbank aufzubauen kann's ja auch nicht sein.

Danke,
Malte
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Di 08.11.05 14:34 
Hi,

auf welcher Basis hast Du den Webservice programmiert? .Net, Intraweb, cgi,.....????

Bei .Net nimmst Du am besten den Firebird .NET Databaseprovider, gibts bei Firebird zum Download. Bei den anderen hast Du insofern das Problem, dass Du für jede Verbindung eine eigene Transaktionssteuerung brauchst, d.h. Du musst dir vermutlich "von Hand" nen Transaktionspool schaffen und dir von dort die benötigten Transaktionen holen.

Grüße
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 08.11.05 15:42 
user profile iconLemmy hat folgendes geschrieben:
[...] Intraweb [...]

Das geht?

Zitat:
Bei .Net nimmst Du am besten den Firebird .NET Databaseprovider, [...]

Kann man dann davon ausgehen, dass die Verbindungen im Pool gecached werden und praktisch erst im Pool nachgeschaut wird, ob da noch 'ne ungenutzte Verbindung rumliegt, bevor eine neue Verbindung erstellt wird?
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Di 08.11.05 16:20 
user profile iconRobert.Wachtel hat folgendes geschrieben:
user profile iconLemmy hat folgendes geschrieben:
[...] Intraweb [...]

Das geht?


Ich dachte das ist die Daseinsberechtigung von intraweb....???

user profile iconRobert.Wachtel hat folgendes geschrieben:

Zitat:
Bei .Net nimmst Du am besten den Firebird .NET Databaseprovider, [...]

Kann man dann davon ausgehen, dass die Verbindungen im Pool gecached werden und praktisch erst im Pool nachgeschaut wird, ob da noch 'ne ungenutzte Verbindung rumliegt, bevor eine neue Verbindung erstellt wird?


Das kann ich nicht sagen, weil ich micht damit nicht eingehend beschäftigt habe. Ich gehe aber davon aus, da das meines Wissens doch eine "Grundfunktion" der .Net Data Provider darstellt....

Grüße
Lemmy
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 08.11.05 16:30 
user profile iconLemmy hat folgendes geschrieben:
Ich dachte das ist die Daseinsberechtigung von intraweb....???

Nö, eigentlich ist es eher eine ASP-Alternative - also auch mit GUI für Benutzereingaben. Dass man damit auch WebServices entwickeln könnte, wäre mir zumindest neu (ich möchte es aber nicht ausschliessen).

Zitat:
[...] Verbindungspooling von .NET DataProvidern [...]

Das kann ich nicht sagen, weil ich micht damit nicht eingehend beschäftigt habe. Ich gehe aber davon aus, da das meines Wissens doch eine "Grundfunktion" der .Net Data Provider darstellt....

Ich gehe auch davon aus, hatte aber ehrlicherweise gehofft, in Dir jemanden zu finden, der diese meine Hoffnung in sicheres Wissen wandeln kann... :mrgreen:
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Di 08.11.05 18:04 
Sorry, dass ich Dir da nicht weiterhelfen kann!

Aber vielleicht kannst Du mich aufklären was der Unterschied zwischen einem Webservice mit wegen mir .Net und einer "Webapplikation" mit ASP, cgi, Intraweb.

Grüße
Lemmy
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 08.11.05 18:20 
Hier hilft Wikipedia ganz gut weiter:

Webservice

ASP.Net
hamburg Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 08.11.05 20:53 
Hi,

danke für Eure Antworten ...

Der WebService basiert auf V7 Enterprise (CGI Standalone WebService) und wird unter Apache2 im Virtual Host betrieben.

Gibt's denn nirgendwo ein Beispiel o.ä.? Ich kann doch nicht der erste sein, der an dieser Frage "scheitert" ... :-(

Gruß,
Malte
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Mi 09.11.05 08:56 
user profile iconRobert.Wachtel hat folgendes geschrieben:
Hier hilft Wikipedia ganz gut weiter:


Danke! Da ist Intraweb dann vermutlich nicht wirklich geeignet ;-))

@Hamburg: Ich habe so was noch nie gemacht. Ich denke aber einen Transacion-Pool anzulegen sollte nicht so schwer sein:

Als erstes brauchen wir 2 TObjectList-Objekte:

ausblenden Delphi-Quelltext
1:
var olTransactionPool, olTransactionActive:TObjectList					


beim Start des Webservice kannst Du dann gleich mal ne Handvoll Transaktionen erzeugen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  for i:=0 to 9 do 
  begin
    Transaction:=TIBTransaction.Create;
    Transaction.Database:=IBDatabase;
    olTransactionPool.Add(Transaction);
  end;


Bei der Anforderung einer Transaction schaust Du nach ob im Pool noch eine vorhanden ist:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  if olTransaction.count>0 then 
  begin
    MeineTranaktion:=olTransaction.items[olTransaction.Count-1];
    olTransaction.Delete[olTransaction.Count-1];
  end 
  else
    MeineTransaktion:=TIBTransaction.Create;
    ....
  begin
  olTransactionActive.Add(MeineTransaktion);


und wenn nicht, dann erzeugst Du dir eine. Zum Schluss weißt Du die den aktiven Transaktionen. Wenn dann eine Verbindung und damit Transaktion abgeschlossen ist, kannst Du die einfach wieder in den pool verschieben.

Hinweis: Ich habe so was noch nie gemacht. Die Codeschnipsel sind hier auf die schnelle niedergeschrieben, ohne Test,..... die sollen also nur einen Hinweis darstellen!

Grüße
Lemmy