Frage

Ich bin auf der Suche lokalen Verbindungsverlust zu erkennen. Gibt es ein Mittel, das zu tun, als mit den Ereignissen auf den Corelabs Komponenten?

Danke

EDIT: Sorry, ich werde versuchen, um genauer zu sein: Ich bin derzeit der Gestaltung eines Prototypen DataSnap mit 2009 Also ich habe einen Thin Client bekam, eine stateless Server App und einen Datenbankserver.

Was würde ich in der Lage sein zu tun ist, zu erkennen und zu Verbindungsverlust (Internet-Konnektivität) zwischen dem Client und der Server-Anwendung zu behandeln, um es entsprechend zu behandeln, das heißt: Zeigen Sie eine informative Fehlermeldung an den Benutzer oder ein Herunterfahren des Servers zu erkennen leise Umleitung auf einem anderen App-Server.

In 2-Tier-I verwendet zu verwalten, dass mit ODAC Komponenten, die TOraSession einige Ereignisse hat diese Probleme zu behandeln.

War es hilfreich?

Lösung

Normalerweise gibt es kein Ereignis ausgelöst, wenn eine Verbindung unterbrochen wird, es sei denn, eine Anweisung für die Datenbank ausgelöst wird. Dies liegt daran, es gibt keine Möglichkeit, einen Verbindungsverlust zu wissen, es sei denn, es irgendeine Art von IS-alive Pingen los ist.

Viele Frameworks überprüfen, ob eine Verbindung noch gültig ist durch eine sehr kleine Abfrage auf dem Server zu tun. Könnte die Zeit von einem Server bekommen. Gerade in einer Verbindungs-Pooling-Umgebung.

Sie können eine Verbindung implementieren in Ihrer Anwendung in einigen der Datenbankereignisse (BeforeExecute?) Prüffunktion. Oder einen Timer machen, die alle 10 Sekunden überprüft.

Andere Tipps

Spawn ein Thread auf dem Client, die periodisch ein RPC ‚Ping‘ oder ‚Herzschlag‘ senden Befehle an den Server.

  • Wenn dies nicht gelingt, weiß der Kunde, dass etwas mit der Verbindung passiert

  • , wenn der Server den Client nicht mehr hört seit einiger Zeit (zum Beispiel zwei Mal des Taktintervall), kann er feststellen, dass die Client-Verbindung beendet, jedoch erfordert dies einen Stateful-Server (und Ihr Design ist staatenlos so wäre es Ereignisverarbeitung in einem Sekundärsystem erfordern, die über eine Nachrichtenwarteschlange eingespeist werden könnte)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top