Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 10. Jan 2012, 10:00
Neben Polling gibt es noch die Möglichkeit, die Nachrichten von der Quelle (d.h. von der Anwendung, die Daten ändert) an das Ziel (die Anwendung mit GUI) zu senden.

Mit UDP Broadcast wäre es zwar nicht hundertprozentig zuverlässig aber mit wenig Aufwand machbar. Nur bei großer Anzahl Empfänger würden auch die Pakete das Netzwerk unnötig belasten (da ja immer an alle gesendet wird).

Über einen zentralen Messaging Server ginge es eleganter - Clients, die gerade das betreffende Treeview anzeigen, senden dem Server eine Nachricht "Hallo, ich bin Client X, und würde ab jetzt gerne eine Nachricht über Änderungen in Tabelle Y erhalten". Über TCP kann der Client dann asynchrone Nachrichten empfangen. Bei Indy sind dazu im Prinzip schon alle Komponenten enthalten.

Auf dem Weg über den Datenbankserver geht es zwar auch, bei InterBase (Version 5) schossen die Events damals aber immer die Clients ab, so dass wir es schnell sein liessen. Ein größeres Risiko ist, dass der Code für die Events im Prozess des Datenbankservers selber läuft. Wenn darin ein Fehler auftritt, kann das die Stabilität gefährden bis hin zum Absturz.
Michael Justin
  Mit Zitat antworten Zitat