Client, Server, Datenbank, Protokoll und das Ganze nun kombiniert...

antimon

Mitglied
Hallo zusammen,

leider kann ich das Thema nicht genauer definieren, da ich selbst noch nicht ganz sicher bin, wohin die Reise geht... ich hoffe, Ihr könnt mir den einen oder anderen Tip bzw. Wink mit dem Zaunpfahl geben...

Mein Ziel ist es, eine RCP-Anwendung servertauglich zu machen - die Anwendung hat mehrere Module mit verschiedenen Funktionen. Beispielsweise sollen damit Aufgaben verwaltet werden - z.B. trägt ein Client eine Aufgabe ein, die auf einem anderen Client angezeigt und bearbeitet werden können soll. Als Backend soll eine MySQL-Datenbank dienen, die der Server bedient.

Derzeit existiert schon eine RCP-Applikation, die direkt auf die Datenbank zugreift mit Hibernate als Framework. Allerdings habe ich das Gefühl, Hibernate ist für diesen Zweck nicht sonderlich gut geeignet, vor allem aber denke ich dass ein zentraler Server besser für die Koordination zwischen den Clients geeignet ist.

Aber genau aus diesem Grund wende ich mich an Euch - bis jetzt habe ich viele Tage für Recherchen gebraucht, bin aber nicht wirklich schlauer.

Ein Punkt ist die Kommunikation zwischen Client und Server - da gibt es die Möglichkeit das über Sockets zu erledigen, per RMI oder REST, ... letzteres wäre serverseitig z.B. mit CakePHP recht einfach zu implementieren, aber halt stateless. Sockets sind wohl sehr flexibel, aber da wäre wohl einiges manuell zu implementieren. Mit RMI kenne ich mich noch nicht so gut aus, deswegen kann ich das nicht so beurteilen - aber vermutlich gibt es eine noch bessere Lösung die ich noch nicht kenne?

Die nächste Frage ist, wie man die Daten zwischen Server und Client synchron hält. Gibt es da bewährte Vorgehensweisen? Angenommen ich habe eine Aufgabenliste mit 10 Aufgaben auf dem Server, so lädt sich jeder Client diese vom Server und cacht die Daten lokal. Sobald die Liste von einem Client geändert wurde, muss die Änderung auf den Server übertragen werden und alle Clients müssen die Änderungen mitbekommen. Wie macht man so etwas am sinnvollsten? Wenn der Server geänderte Daten enthält, wie bekommen das die Clients mit? Und wie beziehen die neuen Daten mit möglichst wenig Datentransfer? Alle Daten im (gecachten) Model verwerfen und alle vom Server neu laden ist vermutlich nicht der beste Weg, aber wie lautet dieser? EventListener funktionieren in diesem Fall ja vermutlich nicht, oder?

Genauso: Wie hält man Server und Serverdatenbank synchron? Oder cacht man dort die Daten gar nicht im Model, sondern greift bei jeder Anfrage direkt auf die Datenbank zu?

Leider fehlt mir in diesem Bereich bisher die Erfahrung, deswegen bin ich für jede Hilfestellung sehr dankbar!

Vielen Dank für Eure Hilfe!