Message-Protokoll: Verbesserungsmoeglichkeiten im Ansatz?

  • Themenstarter Themenstarter tuxedo
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

tuxedo

Gast
Hi ihr,
ich habe mir einen kleine Client/Server Anwendung geshrieben die mittels Socket nachrichten austauscht. Beispielsweise meldet sich der Client eim Server mit seinem Namen und Passwort an oder er sendet eine Versionsinfo damit der Server pruefen kann ob die Client-Version noch up2date ist..

Hierfuer wollte ich kein RMI oder so nehmen, reine Socketverbindung mit serialisierung.
Dazu habe ich mit eine Message-Klasse geschrieben die einfach nur 2 Variablen kennt und keine Methoden:

Message-ID vom Typ String
Message-Object vom Typ Objekt

Message-Objekt enthaelt ein Objekt das von unterschiedlichen Typen sein. Zum Beispiel LoginMessage. LoginMessage kennt dann den Benutzernamen und das Passwort. In der Message-ID steht ein String der das Messae-Object identifiziert. Beispielsweise "LoginMessage".

Die Message wird serialisiert und durch die Leitung geschickt.
Der Empfaenger weiss dass NUR Message-Objecte kommen und kann das dann passend in eine Message casten. Dan liest er die Message-ID aus. Anhand dieser ID weiss er in welchen Typ er das Message-Object casten muss um die Nachricht zu verarbeiten.

Der Ansatz mag naiv sein, aber fuer den Anfang nicht schlecht. Da die Klasse Message immer gleich bleibt und mit erweiterung des "Protokolls" nur neue Klassen wie VersionsKontrolle etc. hinzukommen ist es einfach erweiterbar.

Was haltet ihr von diesem Ansatz und wo seht ihr moeglichkeiten diesen zu verbessern ohne auf RMI oder sowas umzusteigen.

gruss
Alex

P.S. ich hoffe ich konnt es einigermassen verstaendlich erklaeren...
 
quark

am Server musst du ja eine Kaskade von if("LoginMessage".equals(ID)) machen um "passend zu casten"

aber dann kannst du das genausogut und effektiver mit instanceof lösen

=> dann wär die ID völlig überflüssig und es würden nur noch die Objekte verschickt, wordurch das Protokoll sehr vereinfacht würde
 
Stimmt, das is ne coole Idee..Dann spare ich mir auch das konsitent halten der IDs beim client und server.
Aber um ein Abfragen auf ale vorkommenden Instace-Arten komm ich nicht...

- Alex
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben