Laden...

Wie kann ich versch. Messagetypes bei einer Socketverbindung behandeln?

Erstellt von FUT320 vor 5 Jahren Letzter Beitrag vor 5 Jahren 889 Views
F
FUT320 Themenstarter:in
10 Beiträge seit 2018
vor 5 Jahren
Wie kann ich versch. Messagetypes bei einer Socketverbindung behandeln?

Hallo,

Ich habe eine Socket Server, der von einer Maschine mehrere Requests abarbeitet. Die Message splitten ich und speichere die Werte in einem Dictionary. Somit lässt sicher der Typ über dict["Type"] abfragen. Die Erkennung des Types ist über einen if-block realisiert. Das Ganze funktioniert auch, nur habe ich mich gefragt, ob es eine elegantere Lösung gibt.

Beispielhaft hier der Code:


If(dict["Type"].Equals("A"))
{
new ResponseA();
}
Else if(dict["Type"].Equals("B"))
{
new ResponseB();
}
Else if(dict["Type"].Equals("C"))
{
new ResponseC();
}

Wie gesagt, es ist eher die Frage ob es einen besseren Weg gibt bzw. ob es überhaupt notwendig sein sollte.

Vielen Dank schon mal.

16.806 Beiträge seit 2008
vor 5 Jahren

Warum serialisierst Du die Nachricht nicht in eine Klasse mit einem entsprechenden ENum-Property?
Das wäre jedenfalls ein potentieller typisierter Weg.

Vergleich auf Magic String Basis sollte man immer vermeiden, wenn Möglich.
Für solche Fälle gibt es zig Pattern; im Prinzip basiert auf dieser Art und Weise jede asynchrone Message-Kommunikation (zB AMQP, MQTT...).

F
FUT320 Themenstarter:in
10 Beiträge seit 2018
vor 5 Jahren

Danke für deine Antwort.
Ich habe keinen richtigen Ansatz dazu gefunden.
Die Messages sind im folgenden Format:

TYP|Prozess=A|Status=B etc.

Bei den meisten Beispielen die ich gefunden habe, wird von XML oder JSON Format ausgegangen. Ich habe zwar auch schon von einer Umwandlung des Formats gelesen, aber ob das das richtige Vorgehen ist bezweifle ich irgendwie.

Hast du evtl. einen Ansatz oder einen Link zu einem passenden Artikel?