Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ByteArray in Object Convertieren
Loofsy
myCSharp.de - Member



Dabei seit:
Beiträge: 26

Themenstarter:

ByteArray in Object Convertieren

beantworten | zitieren | melden

Hallo liebe Mitentwickler,

ich habe folgende frage:

Ich habe ein Client Serversystem entwickelt. Dieses soll nun die Möglichkeit haben verschiedene Objekte wie String, Integers, oder auch DataSet´s zum client zu senden.

dazu ist es (für mich) wichtig das die ankommenden Daten (als ByteArray) als object zu konvertieren.

Die derzeitige Lösung überführt das Array jedoch in einen String was nicht sein soll.


Encoding.ASCII.GetString(state.buffer, 0, bytesRead)

Um die Zwischenschritte zu Dokumentieren habe ich kein kleines Loggongprogramm geschrieben.

Nun Passiert folgendes:

wenn mein Client nun daten aus einer Datenbank (MS SQL) benötigt, sendet er die Anfrage an seinen Server. Der server wiederrum kommuniziert mit der Datenbank und sendet nun die erhalltenen Daten zurück an den Client.

Wenn ich nun ein DataGridView mit diesen Daten füllen will, versuche ich das so:


dgv1.DataSource = _client.RequestToServer(sqlString); //RequestToServer ist vom Datentyp object

der Server soll nun ein DataSet übermitteln!

Laut dem ankommenden Logdaten kommt jedoch nur der String "Table" zurück. Wie kann ich also das ByteArray in object convertieren um das opject dann später als DataSet zu convertieren?

vielen dank für die Hilfe.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.359

beantworten | zitieren | melden

Das ist so direkt nicht möglich! Bisher überträgst du wahrscheinlich einfach nur dataTable.ToString(), oder? Und da wird nur der Typname übermittelt, nicht der Inhalt der DataTable.
Was du benötigst nennt sich "Serialisierung", am besten wohl per JSON (Binärserialisierung ist nur bei einfachen Datentypen sinnvoll).
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1.987
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Und anstelle von DataTable/DataSet solltest du eigene Datenstrukturen (Klassen) verwenden.
DataTable/DataSet sind schon speichertechnisch Brocken, die enorm vie Speicher verbrauchen!
Wann immer möglich verzichte darauf, nuzte diese nur wenn es absolut nötig ist.

Ansonsten klingt dein aktueller Ansatz ziemlich nach Magic Code und weniger nach einer Schnittstelle zwischen Client und Server.
Hier sollte dein Server fertige Schnittstellen anbieten um die Daten, die du benötigst, zu liefern.
Entweder über eine Api oder ein fertiges Protokoll.
Hier würde ich beim Server z.B. auf eine Http Api wie Web Api von Microsoft setzen.
Dann kann dein Client einfach per Http Abfragen die Daten abholen und durch Serialisierung sowohl den Request/Response dann als Json hin und her schieben.
Damit hast du schon eine recht gute Grundlage und kansnt durch die Api auch saubere Schnittstellen defineiren.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.829
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Loofsy,
Zitat
Ich habe ein Client Serversystem entwickelt
Was hast du denn (als größeres Ziel) vor? Client-Server Protokolle / Systeme wurden schon viele entwickelt, manche sind wieder verschwunden, andere haben sich etabliert.
Die Etablierten sind allesamt vielfach im Einsatz und somit auch sehr robust, wie z.B. HTTP-APIs, gRPC, etc. Je nach konkreter Anforderung können weitere Möglichkeiten in Betracht gezogen werden -- ob es rein Client/Server ist od. doch eher Pub/Sub, etc.

Selbst entwickeln würde ich so ein System eigentlich nur zu Lern-/Verständniszwecken od. wenn es so eine Nischenanwendung ist dass es wirklich kein vorhandenes System dafür gibt.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers