| 

.NET C# Java Javascript Exception

3
Hallo zusammen,

ich habe einige große Datenmengen in Dateiform abzuspeichern. Das "Objekt" besteht dabei aus einer Art Header, in dem eine generische Liste von Messdaten hängt.

class Header
{
Headerinfo
List<Messdaten>
}


Damit im Arbeitsablauf schnell neue Messdaten angehängt und gespeichert werden können, habe ich die Serialisierung aufgesplittet, so dass ein Header Objekt mit leerer Liste serialisiert wird und dann die einzelnen Messdatenobjekte angehängt werden können:

<Header><Messdaten 1><Messdaten 2>


Wenn ich neue Messdaten (3) habe, werden nur noch diese serialisiert und einfach angehängt:

<Header><Messdaten 1><Messdaten 2><Messdaten 3>


Beim Deserialisieren, wird der Header gelesen und dann liest er solange einzelne Messdaten, bis ich das Ende des Streams erreicht habt. Funktioniert schnell und problemlos.

Jetzt würde ich aber noch gerne die Daten komprimieren ... :(

Nicht nur, dass bei GZipStream die .Length und .Position Properties überschrieben wurden und immer eine Exception werfen, nach dem Lesen / Deserialisieren des "Header" (mit der leeren Liste) kann ich nicht weiter von dem GZipStream lesen.

Gibt es hier eine einfache Lösung für?

Ich werde sonst versuchen, beim Serialisieren zuerst immer die Größe des komprimierten Objektes zu speichern, so dass ich beim Deserialisieren gezielt die Blöcke lesen und dann enpacken kann. Das müsste eigentlich funktionieren?!

123<Header>1342<Messdaten 1>3223<Messdaten 2>


Über eine (elegante) Lösung würde ich mich freuen ;)

Danke,
Mike
14.02.2013
Xantiva 2,3k 2 9
1 Antwort
1
Das klingt für mich so, als würde der System.IO.Packaging Namespace und die dort enthaltenen Klassen eine Lösung liefern.

Du kannst Dir ein Package (z.B. ZipPackage) erstellen und PackageParts darin abspeichern. Deine Klasse Header würde ich auf ein Package abbilden und die Einzelteile (Elemente der List<Messdaten>) auf Parts.
14.02.2013
ffordermaier 8,4k 3 9
Hallo ffordermaier,
leider bin ich erst jetzt dazu gekommen mir den Packaging Namespace anzusehen. Es scheint, dass das eine gute Lösung ist. Eine kleine Testanwendung funktioniert schon sehr gut. Jetzt kommt nur noch der Test mit den "vielen Daten" ;)

Xantiva 25.02.2013
Würde mich freuen, wenn Du mir von Deinen Erfahrungen bzgl. der Performance mit "vielen Daten" an dieser Stelle berichten könntest. Ich drück Dir auf alle Fälle schonmal die Dauemn, dass es für Dich funktioniert. Schon ganz brauchbar, dieser Namespace...
ffordermaier 25.02.2013
Ich gebe mir Mühe ...
Was mir auch gefällt, ist die Erweiterbarkeit bzw. die allgemeine Flexibilität. Mal sehen, ob ich die ganzen "RelationShips" richtig verstanden habe. :)
Xantiva 25.02.2013

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH