myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Wie kann ich versch. Messagetypes bei einer Socketverbindung behandeln?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich versch. Messagetypes bei einer Socketverbindung behandeln?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
FUT320
myCSharp.de-Mitglied

Dabei seit: 21.08.2018
Beiträge: 8


FUT320 ist offline

Wie kann ich versch. Messagetypes bei einer Socketverbindung behandeln?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

C#-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.
Neuer Beitrag 21.01.2019 23:13 Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.251
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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...).
Neuer Beitrag 21.01.2019 23:53 Beiträge des Benutzers | zu Buddylist hinzufügen
FUT320
myCSharp.de-Mitglied

Dabei seit: 21.08.2018
Beiträge: 8

Themenstarter Thema begonnen von FUT320

FUT320 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?
Neuer Beitrag 25.01.2019 22:06 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Monate.
Der letzte Beitrag ist älter als 10 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 12.12.2019 04:01