# Kleine Datenobjekte übertragen



## xerberuz (16. Jan 2012)

Ich suche gerade nach einer Möglichkeit kleine Datenobjekte übers Netzwerk zu übertragen. Wichtig ist, dass nicht nur der Client dem Server Daten schicken kann, sondern der umgekehrte Weg auch möglich ist.

Getestet habe ich bisher RMI und JMS uns bin mit beiden Lösungen recht zufrieden. Wobei ich mit RMI noch meine bedenken habe was die Firewall Einstellungen angehen.

Ich würde mit trotzdem gern noch weiter Frameworks anschauen bevor ich mich für eine entscheide. Kennt ihr ähnliche Frameworks um schnell kleine Datenobjekte zu übertragen?


----------



## irgendjemand (16. Jan 2012)

wo ist das problem mit normalen Sockets und ObjectInputStream / ObjectOutputStream zu arbeiten ?
Sockets und deren streams sind übrigens bi-direktional *nicht das du dann mit der frage kommst wie der server dem client daten schicken kann .. hatten wir in letzter zeit zu oft*


----------



## xerberuz (16. Jan 2012)

Ich hab mir schon überlegt mit der lowlevel API zu arbeiten. Keine Sorge mir ist durchaus klar wie Sockets funktionieren. 

Ich bin aber der Meinung mit der low-level API sollte man nur arbeiten wenn man unbedingt muss. Die aktuell produktive implementierung ist serverseitig mit der JAVA NIO API realisiert und Clientseitig in C geschrieben. Das will ich durch eine Lösung komplett in Java ablösen und würde ein high-level Framework bevorzugen.


----------



## irgendjemand (16. Jan 2012)

hmm .. dann würde mir noch JSON einfallen ...
aber RMI wird wohl so nichts ... vor allem wenn auch vom server asynchron daten zum client geschickt werden müssen ...


----------



## Network (16. Jan 2012)

Auf keinen Fall versuchen mit RMI zu arbeiten wenn es über das Internet funktionieren soll... glaub mir, ich habe es versucht.
Wie wäre es stattdessen einfach mit EJB?


----------



## xerberuz (17. Jan 2012)

Network hat gesagt.:


> Auf keinen Fall versuchen mit RMI zu arbeiten wenn es über das Internet funktionieren soll... glaub mir, ich habe es versucht.
> Wie wäre es stattdessen einfach mit EJB?



Habs jetzt auch ein wenig selber getestet. RMI mit callback geht garnicht wenn ne Firewall dazwischen ist. 
Das der Server jederzeit etwas zu seinen Clients schicken kann ist das wichtigste Feature für mich. Kann ich das auch mit EJB realisieren?


----------



## dayaftereh (17. Jan 2012)

Also um NIO und nicht low-level API zu nutzen würde ich mir mal Mina von Apache anschauen: Apache MINA - Welcome to Apache MINA Project! , finde ich ziemlich gut. Hat eine hohe Performanz und wurde in Lineage 2 und SIMON genutzt. Was wie Mina funktioniert ist Netty und bring auch eine hohe Performanz mit, plus eine gute Dokumentation. Bei beiden kannst du deine Objekt De/Serialisieren und dann als Bytes Verschicken, so wie es bei SIMON realisiert wurde.


----------



## xerberuz (18. Jan 2012)

dayaftereh hat gesagt.:


> Also um NIO und nicht low-level API zu nutzen würde ich mir mal Mina von Apache anschauen: Apache MINA - Welcome to Apache MINA Project! , finde ich ziemlich gut. Hat eine hohe Performanz und wurde in Lineage 2 und SIMON genutzt. Was wie Mina funktioniert ist Netty und bring auch eine hohe Performanz mit, plus eine gute Dokumentation. Bei beiden kannst du deine Objekt De/Serialisieren und dann als Bytes Verschicken, so wie es bei SIMON realisiert wurde.



Hab MINA jetzt mal ausprobiert. Das Framework ist auch nicht schlecht. Wobei es natürlich etwas mehr Implementierungsaufwand als bei JMS mitbringt. Aber definitv eine interessante Alternative. 

Werd wohl mit JMS und Mina noch etwas rumspielen.


----------



## Kr0e (18. Jan 2012)

Wenn du bei RMI bleiben willst und dich nur das Firewallproblem stört, dann könntest du dir auf low-level-Ebene selbst was basteln, ist nicht die Welt. Oder nimm sowas hier : SIMON

Ich verstehe allerdings deine Abneigung gegenüber lowlevel nicht. Wenn du Mina/Netty nimmst, ist es nicht soooo lowlevelig wie bei deinem C Client vermutlcih  Man kann mit solchen Frameworks sehr schnell effizienteren Code schreiben als JMS Monster


----------



## xerberuz (19. Jan 2012)

Kr0e hat gesagt.:


> Wenn du bei RMI bleiben willst und dich nur das Firewallproblem stört, dann könntest du dir auf low-level-Ebene selbst was basteln, ist nicht die Welt. Oder nimm sowas hier : SIMON
> 
> Ich verstehe allerdings deine Abneigung gegenüber lowlevel nicht. Wenn du Mina/Netty nimmst, ist es nicht soooo lowlevelig wie bei deinem C Client vermutlcih  Man kann mit solchen Frameworks sehr schnell effizienteren Code schreiben als JMS Monster



Wie ich bereits sagte ist Mina für mich eine brauchbare alternative. SIMON geht leider aufgrund der GPL Lizenz nicht.


----------



## tuxedo (19. Jan 2012)

xerberuz hat gesagt.:


> SIMON geht leider aufgrund der GPL Lizenz nicht.



SIMON ist dual lizensiert. Neben der GPL gibts noch die kommerzielle Lizenz: SIMON - Start - root1.de - Software Engineering


----------

