AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi DataSnap, unreliable Network, Wiederaufnahme der Verbindung
Thema durchsuchen
Ansicht
Themen-Optionen

DataSnap, unreliable Network, Wiederaufnahme der Verbindung

Ein Thema von hokuspokussimsalabim · begonnen am 19. Jul 2011 · letzter Beitrag vom 20. Jul 2011
Antwort Antwort
hokuspokussimsalabim

Registriert seit: 19. Jul 2011
5 Beiträge
 
#1

DataSnap, unreliable Network, Wiederaufnahme der Verbindung

  Alt 19. Jul 2011, 14:50
Hallo...

ich spiele zur Zeit mit DataSnap herum (Delphi XE) und stoße dabei auf ein mehr oder weniger großes Problem.

Die Situation ist folgende: der Client hält einen Proxy mittels dem er Methoden des Servers aufruft. In einer unzuverlässigen Umgebung (bspw. WLAN) kann dies nun dazu führen, dass der Aufruf fehlschlägt (10054 o.ä.). Das wäre soweit kein Problem würde der nächste Aufruf, bei wieder bestehender Netzwerk-Verbindung, "durchgehen". Dies ist leider nicht der Fall. Lapidar dahingeschrieben, kann der Proxy anschliessend weggeworfen werden, ich habe adhoc keinen Weg gefunden ihn wieder dazu zu "überreden", mit dem Server zu kommunizieren. Zwar kann ich die Connection händisch schliessen und wieder neu öffnen, dies hat jedoch hinsichtlich der Clientsession (auf dem Server) Auswirkungen: diese steht nicht mehr zur Verfügung bzw. kann nicht mehr aufgenommen werden. Getestet habe ich als Protokolle sowohl TCP/IP als auch HTTP, KeepConnection mit True als auch False.

Gibt es einen Weg, dieses Verhalten (von DataSnap) mit hauseigenen Mitteln zu beeinflussen, ist dieses Verhalten "per Design" (ich kenne andere Remoting-Frameworks welche dieses Problem adäquat lösen) oder hat jemand vielleicht weitergehende Hinweise zu dem Thema?

Grüße
hokuspokussimsalabim.
  Mit Zitat antworten Zitat
hokuspokussimsalabim

Registriert seit: 19. Jul 2011
5 Beiträge
 
#2

AW: DataSnap, unreliable Network, Wiederaufnahme der Verbindung

  Alt 20. Jul 2011, 08:01
Ich "antworte" mir mal selber... bin gestern beim debuggen noch auf zwei interessante Klassen gestossen: TDBXCommunicationLayerFactory sowie TDBXHTTPLayer in der Unit DSHTTPLayer. Ich werde mir das mal näher ansehen und, falls Interesse besteht, hier weiteres dazu schreiben. Sollte aber jemand einen "offiziellen" Weg mein beschriebenes Problem anzugehen kennen, so ist Feedback weiterhin willkommen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#3

AW: DataSnap, unreliable Network, Wiederaufnahme der Verbindung

  Alt 20. Jul 2011, 08:47
Eine Verbindung die getrennt wurde, ist halt getrennt und kann nicht mehr aufgenommen werden.
Wenn du irgendwelche sessionabhänige Daten benötigst, dann könntest du diese Daten selber verwalten, beim aufbau einer neuen verbindung schuen ob der Client vor Kurzem schonmal verbunden war und dann die "alten" Daten übernehmen ... ansonsten die Daten neu erstellen.


PS: Hab hier selber fast ein halbes Jahr gebraucht, um auch die letzteb Verbindungen halbwegs stabil hinzubekommen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Jul 2011 um 08:50 Uhr)
  Mit Zitat antworten Zitat
hokuspokussimsalabim

Registriert seit: 19. Jul 2011
5 Beiträge
 
#4

AW: DataSnap, unreliable Network, Wiederaufnahme der Verbindung

  Alt 20. Jul 2011, 11:39
Zitat:
Eine Verbindung die getrennt wurde, ist halt getrennt und kann nicht mehr aufgenommen werden.
Klar Ich wollte auch mehr darauf hinaus, dass die Session wieder "aufgenommen" wird.

Zitat:
Wenn du irgendwelche sessionabhänige Daten benötigst
Und genau da hatte ich gehofft, dass DataSnap hier einen "offiziellen" Weg vorsieht, dass ich eine Session, mit einer neuen Verbindung, wieder aufnehmen kann. Bei TCP/IP als Protokoll schon einmal keinesfalls, bei HTTP und HTTP/S wird beim ersten Call eine SessionId erzeugt und diese künftig vom Client mitgegeben. An dieser Stelle hoffte ich, ansetzen zu können. Aber wie sich zeigt ergeben sich da eine ganze Reihe weiterer Probleme.

Zitat:
schuen ob der Client vor Kurzem schonmal verbunden war
Und genau da beisst sich die Katze in den Schwanz. Woran "erkenne" ich den Client. Im Grunde genommen schlägst Du vor, eine Art zusätzliche Sessionverwaltung zu integrieren falls ich Dich nicht gänzlich mißverstehe.
  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:46 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