Hallo zusammen,
ich arbeite derzeit an einer alten Software, die so miserabel konzipiert ist, dass ich sie mangels Wartbarkeit wohl komplett neu schreiben muss. Da ich noch keine Erfahrung mit den verschiedenen Frameworks und dem Aufbau einer Client-Server-Anwendung habe, könnte ich ein paar Tipps gebrauchen, was ich am sinnvollsten einsetzen kann, ohne dabei zu viel Zeit in die Einarbeitung investieren zu müssen.
Die Konstruktion ist aktuell folgendermaßen:
Es gibt drei Projekte, eins für den Server, eins für den Client und ein Shared-Projekt mit den von Server und Client gemeinsam verwendeten Klassen. Ist es sinnvoll, da beizubehalten?
Der Server ist dazu da, die Hardware eines Netzwerks mittels SNMP zu überwachen. Der Client ist zum Konfigurieren des Servers und zur Visualisierung der jeweiligen Hardware-Zustände. Die eigentlichen Funktionen sind relativ simpel.
Aktuell läuft die Kommunikation zwischen Client und Server über ein Tool namens SIMON, das zur vereinfachten Nutzung von RMI gedacht ist. Ist es sinnvoll, das durch JavaEE und/oder Spring zu ersetzen? (Würde ich gern tun, um später Erfahrungen damit nachweisen zu können.) Was wäre zu bevorzugen?
Der Client läuft momentan als Swing-Anwendung. Ist das in Kombination mit JEE/Spring noch sinnvoll, oder was wäre für die GUI zu empfehlen?
Wie realisiert man am besten eine automatische Aktualisierung der vom Server gelieferten Daten auf dem Client? In der aktuellen undurchschaubaren Konstruktion ist es wohl so, dass vom Server selbst die komplette Darstellung generiert wird und nur in den Client eingebunden. Ich würde aber lieber nur Rohdaten vom Server abfragen und die Darstellung dem Client überlassen.
Schließlich gibt es noch eine Überlegung, die Software im Netzwerk neu zu verteilen.
Aktuell laufen Client und Server im gleichen Netzwerk. Der Kunde hat allerdings viele Standorte, an denen jeweils ein eigener Server laufen muss. Die Installation und Konfiguration erfolgt aber von einer Zentrale aus. Da dachte ich, es könnte zur Vereinfachung der Administration sinnvoll sein, mit vielen verteilten Servern und nur einem zentralen Client zu arbeiten. Bei diesem Client könnte dann auch eine Datenbank laufen, aus der sich die einzelnen Server ihre jeweilige Konfiguration holen.
Was ist davon zu halten, und wie würde man das softwareseitig konstruieren?
Vielen Dank für eure Hinweise!
ich arbeite derzeit an einer alten Software, die so miserabel konzipiert ist, dass ich sie mangels Wartbarkeit wohl komplett neu schreiben muss. Da ich noch keine Erfahrung mit den verschiedenen Frameworks und dem Aufbau einer Client-Server-Anwendung habe, könnte ich ein paar Tipps gebrauchen, was ich am sinnvollsten einsetzen kann, ohne dabei zu viel Zeit in die Einarbeitung investieren zu müssen.
Die Konstruktion ist aktuell folgendermaßen:
Es gibt drei Projekte, eins für den Server, eins für den Client und ein Shared-Projekt mit den von Server und Client gemeinsam verwendeten Klassen. Ist es sinnvoll, da beizubehalten?
Der Server ist dazu da, die Hardware eines Netzwerks mittels SNMP zu überwachen. Der Client ist zum Konfigurieren des Servers und zur Visualisierung der jeweiligen Hardware-Zustände. Die eigentlichen Funktionen sind relativ simpel.
Aktuell läuft die Kommunikation zwischen Client und Server über ein Tool namens SIMON, das zur vereinfachten Nutzung von RMI gedacht ist. Ist es sinnvoll, das durch JavaEE und/oder Spring zu ersetzen? (Würde ich gern tun, um später Erfahrungen damit nachweisen zu können.) Was wäre zu bevorzugen?
Der Client läuft momentan als Swing-Anwendung. Ist das in Kombination mit JEE/Spring noch sinnvoll, oder was wäre für die GUI zu empfehlen?
Wie realisiert man am besten eine automatische Aktualisierung der vom Server gelieferten Daten auf dem Client? In der aktuellen undurchschaubaren Konstruktion ist es wohl so, dass vom Server selbst die komplette Darstellung generiert wird und nur in den Client eingebunden. Ich würde aber lieber nur Rohdaten vom Server abfragen und die Darstellung dem Client überlassen.
Schließlich gibt es noch eine Überlegung, die Software im Netzwerk neu zu verteilen.
Aktuell laufen Client und Server im gleichen Netzwerk. Der Kunde hat allerdings viele Standorte, an denen jeweils ein eigener Server laufen muss. Die Installation und Konfiguration erfolgt aber von einer Zentrale aus. Da dachte ich, es könnte zur Vereinfachung der Administration sinnvoll sein, mit vielen verteilten Servern und nur einem zentralen Client zu arbeiten. Bei diesem Client könnte dann auch eine Datenbank laufen, aus der sich die einzelnen Server ihre jeweilige Konfiguration holen.
Was ist davon zu halten, und wie würde man das softwareseitig konstruieren?
Vielen Dank für eure Hinweise!