Entscheidungshilfe gesucht (Architektur, Frameworks)

s3f3s

Mitglied
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!
 
G

Gelöschtes Mitglied 65838

Gast
Der Client läuft momentan als Swing-Anwendung. Ist das in Kombination mit JEE/Spring
was hat das frontend mit dem backend zu tun?


zu deinem Updaten Problem
es gibt viele Maven Projekte die sich damit auseinander gesetzt haben, in javafx gibts ein Projekt das dir sozusagen automatisch einen loader erzeugt der schaut obs was neues gibt und sich selbst updatet ... wirds sicher auch für andere sachen wie swing schon geben oder was auch immer du machen willst...was soll man schon als "GUI" empfehlen ? du kannst MAUI, WPF, JavaFX , AWT, HTML , XML , XAMARIN hernehmen um irgendwas darzustellen da gibts 1000 darstellungs möglichkeiten....

du kannst deinen Server über java laufen lassen und die änderungen über java machen
aber ob das forntend jetzt in c# oder Kotlin oder java ist ist ja arsch wie hose

versuch vllt mal das projekt mit Open UP darzustellen
-> du hast 0 System erquirements genannt
-> muss es auf linux und mac auch laufen oder android? ??
-> hardware technisch?
-> wo bist du eingerschränkt ?

das ist nur ein mini ausschnitt

basierend auf den Entscheidungen entscheidest du die architektur ( arichtecture notebook in Open UP )
.. du kannst kein mvvm hernehmen wenn du es mit html umsetzen willst
... du kannst kein Maui hernehmen wenns auf linux laufen soll
.....
 
Zuletzt bearbeitet von einem Moderator:

s3f3s

Mitglied
was hat das frontend mit dem backend zu tun?
Heißt das, jede GUI-Technik kommt gleich gut mit der gewählten Architektur klar?
Ich dachte, wenn Spring zwingend einen Webserver braucht, könnte die Darstellung im Browser vielleicht geeigneter sein. Aber wenn das völlig unabhängig ist, umso besser.

Mir geht es darum, die vorhandenen Funktionalitäten mit möglichst wenig Lernaufwand in eine neue Architektur zu überführen. Wenn ich daran einfach die vorhandene GUI andocken kann, wäre das am besten.
 
G

Gelöschtes Mitglied 65838

Gast
Also eine Architektur ist wie du was machst

im prinzip hast du immer wenn du was "sicher machen" willst (soweit ich das weis )

1en server der zur aussen welt sichtbar ist, der bekommt anfragen rein, bewertet diese auf sinnhaftigkeit, berechtigung , wahrheit ( single source of truth) der macht dann ne sql abfrage oder sonst was und liefert ne antwort raus an den der gefragt hat

dann hast du auf client seite etwas das kennt nur den server und frägt an nur die Kommunikation kannst du mit JSON, Bytestreams oder sonst was machen dh => es ist komplett egal in welcher sprache oder form das frontend ist und es ist komplett egal in welcher sprache und form das backend ist solange die kommunikation passt

dann machst du dir mehr gedanken

wie setzt du das frontend um
=> mit swing?
=> mit html ?
==> mit welcher architektur setzt du das um ? mvc mvvm mvp ... ganz was anderes

2te frage
wie setzt du das backend um
=> spring ?
=> jdbc ?
=> jooq ?
diese zwei fragen sind aber unabhängig wenn du dich für spring entscheidest heißt das nich dass du html brauchst....machs wie du willst es muss halt gut durchdacht sein das ganze

frontend und backend haben halt wieder ihre eigenen architekturen
UND
die schnittstellen um miteinander zu kommunizieren


wenn du zb swing nimmst mit mvvm wirst dus weinen anfangen weil das eher weniger zusammen passt, wenn du aber javafx mit mvvm umsetzen willst das passt wie faust aufs auge...kommt immer drauf an

so ne software zu planen ist nicht einfach, wenn du dann noch ein framework nimmst wo du keinen plan hast wirst du noch mehr zum weinen anfangen weil im regelfall kannst du dann wenn du fertig bist mit dem projekt das framework gut :D

wenn du jetzt auch noch die architektur anpasst weils nicht exakt passt ( kommt oft vor ) dann wirds noch geiler und schwieriger aber du bist ja informatiker also wirst du dich da schon durchkämpfen

im prinzip funktionoiert das backend auch wenns eine fake gui gibt und das frontend funktioniert auch wenns eine fake backend gibt
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben