Client-Server Kommunikation - welchen Ansatz?

  • Hallo,

    ich würde gerne ein Client-Server System mit folgenden (typischen) Requirements programmieren:

    • Client called Methoden beim Server, der Sachen aus einer DB/externen Programm ausliest
    • Server called Client, wenn bestimmte Ereignisse registriert werden
    • Kommunikation soll sicher sein
    • Kommunikation muss zwischen unterschiedlichen Netzwerken möglich sein


    Ich hab jetzt einen kleinen Prototypen mit RMI gebastelt, der aber das Problem hat, das "Callbacks" nicht gut mit RMI und untschiedlichen Netwerken klappen. Außerdem weiß ich nicht, wie toll es zb mit Security und RMI aussieht.
    Dinge wie JAX-RPC würde ich übrigens gerne vermeiden, da das wegen meiner komplexen Datentypen in der KOmmunikation nach viel Aufwand aussieht. Oder täusche ich mich da?

    MfG

  • Ich würds vermutlich zuerst einfach mal mit plain TCP/IP + SSL versuchen (ist ja zb. in java recht leicht machbar). Was genau meinst du mit unterschiedlichen Netzwerken? Internet dazwischen und Firewalls etc. oder Ethernet + was anderes?

    Wenn du Java verwendest, kannst Objekte ja sowieso einfach serialisieren und den bytestream übertragen (wegen den erwähnten komplexen Datentypen)

  • Dinge wie JAX-RPC würde ich übrigens gerne vermeiden, da das wegen meiner komplexen Datentypen in der KOmmunikation nach viel Aufwand aussieht. Oder täusche ich mich da?

    Verwende JAX-WS, für die Kommunikation zwischen Client und Server schreibst du dir vereinfachte Versionen deiner Objekte als DTOs, die alle Daten auf Basisdatentypen und Strings übersetzen, auf der Gegenseite machst du das Umgekehrte. Damit sparst du dir, unnötig XML-Adapter zu schreiben. Und hast die Freiheit, den Client in einer beliebigen Sprache zu implementieren.

    Eine Lösung von Grund auf mit Sockets und eigenem Protokoll zu schreiben klingt aufwändig, unflexibel und masochistisch - würde ich nur machen, wenn es gute Gründe gibt.

  • Danke erstmal für alle Beiträge.

    Verwende JAX-WS, für die Kommunikation zwischen Client und Server schreibst du dir vereinfachte Versionen deiner Objekte als DTOs, die alle Daten auf Basisdatentypen und Strings übersetzen, auf der Gegenseite machst du das Umgekehrte. Damit sparst du dir, unnötig XML-Adapter zu schreiben. Und hast die Freiheit, den Client in einer beliebigen Sprache zu implementieren.

    Eine Lösung von Grund auf mit Sockets und eigenem Protokoll zu schreiben klingt aufwändig, unflexibel und masochistisch - würde ich nur machen, wenn es gute Gründe gibt.



    Die Entscheidung ist nun doch auf Rmoting und damit RMI gefallen. Callbacks des Servers sollen nun so gelöst werden, dass es ein zusätzliches RMI Interface geben wird, auf das der Client in bestimmten Abständen pollt, und das eben ein Serializable Object zurückgibt, falls sich was getan hat, und null sonst. So soll das Problem mit den Firewall umgangen werden.
    Für Security soll jetzt noch SSL integriert werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!