Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Kommunikation zweier Instanzen im Lan (DB-Polling vs. TCP)!

  Alt 16. Feb 2010, 20:21
Hallo,

ich stehe vor einem Problem

Ich habe ein Programm geschrieben, mit dem in einem Netzwerk ca. 10 Leute arbeiten. In diesem Programm ist eine Benutzerliste mit dem Online/Offline-Status und die Möglichkeit, den Usern Nachrichten zu schreiben.

Da einige Leute auch via VPN über einen SurfStick ins Lan kommen, würde ich gerne verhindern, ständig die MySQL-Datenbank nach Änderungen des BenutzerStati und neuen Nachrichten zu fragen.
Problem ist, dass das ganze Programm dann lahmt.

Deshalb wollte ich diese Sachen auf TCP (IdTCPServer/Client) umstellen. Doch hier ist das Problem, dass die User nicht immer die selbe IP haben (echte Lan-IP, VPN-IP mehrere Netzwerkkarten etc).

Ich brauche mal eure Entscheidungshilfe. Es geht also um TCP-Kommunikation vs MySQL-Polling.

Die SQL-Abfragen könnte ich in Threads packen. Damit würde das Programm nicht mehr lahmen. Nachteil wäre, dass nervige Fehlermeldungen kommen, wenn der Server nicht erreichbar ist/wird.

TCP ist direkt, geht schnell und nur dann, wenn man es braucht. Ich würde, wenn User C online kommt, allen anderen Usern eine TCP-Message wie "/updateOnlineUser" senden und die würden dann die Datenbank abfragen und sich die neuen Stati holen.
Nachteil hier ist die wechselnde IP-Adresse. Dagegen habe ich gearbeitet, indem ich zu jedem User bei Programmstart in der DB alle IP-Adressen speichere und dann, eine nach der anderen durchgehe und schaue, welche richtig ist. Diese speicher ich dann im User-Objekt (User.IP). Doch das hin-und-her von TCP-Messages, UpdateCommandos etc nimmt bei vielen Usern viel Zeit in Anspruch (gerade über VPN).

Ich bräuchte - wie gesagt - eure fachliche Meinung, Vor- und Nachteile oder ganz und gar andere Lösungen.

Vielen Vielen Dank im Voraus
  Mit Zitat antworten Zitat