Laden...

ByteArray in Object Convertieren

Erstellt von Loofsy vor 2 Jahren Letzter Beitrag vor 2 Jahren 962 Views
L
Loofsy Themenstarter:in
32 Beiträge seit 2020
vor 2 Jahren
ByteArray in Object Convertieren

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.

4.939 Beiträge seit 2008
vor 2 Jahren

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).

T
2.224 Beiträge seit 2008
vor 2 Jahren

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.

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo Loofsy,

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!"