Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

DataSnap - Connection-Probleme

  Alt 5. Dez 2011, 14:43
Delphi-Version: XE
Soooo,

ich hab mir einen DSServer erstellt, dann über den Assistenten mir die ClientKlasse und das ClientModul erstellen lassen.

Wenn jetzt der Server abschmiert oder einfach nur ganz "normal" über Server.Stop deaktiviert wird, dann bekommen die Clienten das nicht mit.
OnDisconnect wird nicht aufgerufen, SQLConnection1.Connected steht weiterhin auf True.

Sobald nun eine Servermedode ausführe, egal ob vorher die Connection manuell mit
Delphi-Quellcode:
ClientModule1.SQLConnection1.Connected := False;
ClientModule1.SQLConnection1.Connected := True;
neu aufgebaut wird, knallen nun alle Aufrufe der Servermethoden, egal ob das TDBXCommand schon exisitert (Methode schonmal aufgerufen) oder neu erstellt wird (Methode wurde vorher noch nicht aufgerufen).


Hab ich jetzt irgendeinen Fehler reingebaut? (außer ein zusätliches Logging der Events hab ich aber nix Schlimmes eingebaut)
Kennt jemand das Problem und hat vielleicht eine Lösung?


Nach einem Verbindungsabbruch kommt dann immer du Folgender Exception, beim internen Aufruf von XyzCommant.Prepare, bzw bei XyzCommant.ExecuteUpdate.
Zitat:
---------------------------
Clientproject
---------------------------
Socket-Fehler # 10053

Software verursachte einen Verbindungsabbruch.
---------------------------
OK
---------------------------
Knallte es vorher im XyzCommant.Prepare, dann rumst es nachher schon beim Zuweisen der Parameter, vorm ExecuteUpdate.
Zitat:
---------------------------
Clientproject
---------------------------
Ungültige Ordinalzahl: 0.
---------------------------
OK
---------------------------
Weder Server noch Clienten bekommen mit, wenn die Connection abbricht.
Auf Seiten des Server ergibt das dann nette Speicherlecks, was für einen lange laufenden Service/Server nicht unbedingt optimal ist.


Wir haben auch grade rausbekommen, daß Windows KeepAlive-Connections lange nicht schließt, da es garnicht oder nur selten die Verbindung prüft.



Wir versuchen grade unseren AppServer neu aufzubauen, nachdem wir nun genügend mit DataSnap rumgespielt haben
und mit massenhaft Problemchen (Bugs und Dokumentationsfehler) konfrontiert sind.

Uns sind auch mal dabei das Teil (DataSnap) auf Herz und Nieren zu testen, bzw. zu schauen was der wie wo macht.
- wieviele Connections gibt es
- wie ist die Verbindungssicherheit
- wie die Verbindungsstabilität
- ...
- und vorallem ... wie reagiert das Teil bei Problemen




PS: Callbacks, sind wegen der Connectionprobleme nicht nutzbar ... ich hatte grade einen Test, da gehen durchschnittlich 5-90% der BroadcastMessages einfach so verloren.
Abgesehn davon, daß wir die eh nicht nutzen könnten, da sie sich, Aufgrund eines eklatanten Designfehlers, nicht mit einer Connections-Authentifizierung vertragen. (man kann Clientseitig nirgendwo Benutzername und Passwort angeben).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat