# Netty umsetzung für ein Protokoll



## JavaQuestion (27. Feb 2016)

Hallo Java-Forum Community,

nach dem ich mir die "Grundlagen" von der Java Programmierung angeeignet hab wollte ich mich an eine "saubere" Netzwerkprogrammierung machen.
Dabei bin ich auf folgendes Problem gestossen:
-> ich brauche ein einheitliches Protokoll-System, vorher hab ich das immer so gemacht:
Netty(z.B Client) sendet folgenden Json String -> '{"id":0, "message":"File not found", "type":"error"}', nur bin ich mir nicht sicher ob man das ein Netzwerkprotokoll nennen kann.
Wie kann man via Netty am besten so ein Netzwerkprotokoll umsetzen?
Und dies dann auch relativ performant?(Heißt geringe Bearbeitungszeit & wenig Traffic)

MFG
JavaQuestions


----------



## kneitzel (28. Feb 2016)

Also ein Netzwerkprotokoll ist ja lediglich eine Beschreibung, was wie an Nachrichten ausgetauscht werden kann. Nur so ein Beispiel ist natürlich noch kein Protokoll.

Bezüglich wenig Traffic und geringe Bearbeitungszeit bist Du natürlich bei Json Strings nicht gerade in der Top-Liga. Aber hier ist die Frage, in wie weit das wirklich wichtig ist.
Wenn Du ein möglichst kurzes und auch relativ performantes Protokoll brauchst, dann kannst Du das wirklich auf Byte-Ebene beschreiben. Dann hast Du ein erstes Byte, dass den "Befehl" wiedergibt. Ein "File not found" kann dann ein einfaches 0xe1 oder so sein. Ist halt um einiges kürzer. Und auch die Verarbeitung ist um einiges schneller - ist bei einem Byte halt nur ein Array-Zugriff oder von mir aus der Vergleich von einem einzelnen Byte. (Im Gegensatz zur Auswertung von Strings!)

Aber wer die Nachricht sieht, hat keine Chance, diese zu verstehen. Daher setzen sich halt andere Protokolle durch. Und da macht es evtl. Sinn, sich einfach an ein bestehendes Protokoll zu hängen. WSDL z.B. bei Webservices. Das ist recht weit verbreitet und wird stark eingesetzt. Aber da würde ich Dir aber zu anderen Frameworks raten anstatt netty (Ich kennen netty nicht aber auf den ersten Blick schien es mir noch sehr "low level" zu sein). 

Wenn Du aber auf Performance größten Wert legst, dann ist das evtl. nicht wirklich brauchbar. Da ist dann ein auf Byte-Ebene definiertes Protkoll besser (und dann achtet man auch darauf, dass die Nachrichten wirklich so kurz sind, dass diese in ein Paket passen. Und statt tcp nimmt man ggf. udp. Halt alles um den Overhead zu verringern.


----------

