Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 13 Binäre Serialisierung
Pfeil 13.1 Einführung in die Serialisierung
Pfeil 13.1.1 Serialisierungsverfahren
Pfeil 13.2 Serialisierung mit »BinaryFormatter«
Pfeil 13.2.1 Die Deserialisierung
Pfeil 13.2.2 Serialisierung mehrerer Objekte

13 Binäre SerialisierungZur nächsten Überschrift


Galileo Computing - Zum Seitenanfang

13.1 Einführung in die SerialisierungZur nächsten ÜberschriftZur vorigen Überschrift

Sämtliche Daten, unabhängig vom Verwendungszweck, werden durch die Felder der Klassen beschrieben. Ein Anwender interessiert sich nicht für diese Details. Er arbeitet mit den Daten, manipuliert sie und erwartet ein fehlerfreies Laufzeitverhalten. Dazu zählt auch, dass nach dem Schließen und dem späteren Neustart des Programms exakt der Zustand wiederhergestellt wird, den ein Objekt vor dem Schließen hatte. Mit anderen Worten heißt das für Sie als Entwickler, alle Daten dauerhaft zu sichern, um sie später wiederherstellen zu können.

Wenn wir aber die damit verbundene Problematik im Detail betrachten, zeigen sich einige Hürden:

Die Daten einer Anwendung werden in verschiedenen Typen vorgehalten. Doch welche sind notwendig, um ein bestimmtes Objekt wiederherzustellen? Zwangsläufig müssen das nicht alle sein, denn ein Objekt könnte auch Daten enthalten, die spezifisch für die aktuelle Laufzeitumgebung sind und nach dem erneuten Starten der Anwendung keine Bedeutung mehr haben.

Alle gespeicherten Daten sind einem bestimmten Typ zuzuordnen. Wenn der Inhalt der Eigenschaft Name eines Objekts der Klasse Kunde gesichert wird, darf dieser Wert nach dem Neustart nicht dem Feld Name eines Objekts vom Typ Lieferant zugeordnet werden – die Folgen wären fatal. Auch ein zweiter Gesichtspunkt ist relevant. Angenommen, die zu speichernden Daten gehören zu einem Spiel, an dem zwei oder mehr Personen beteiligt sind. Dass später der aktuelle Stand jedes Spielers eindeutig wiederhergestellt werden muss, steht außer Frage. Konsequenterweise bedeutet das aber auch, dass bei mehreren typgleichen Objekten die Daten demselben Kontext zugeordnet werden müssen.

Die sich auftürmenden Probleme scheinen schier unüberwindlich zu sein. Wir brauchen uns darüber aber nicht unnötig den Kopf zu zerbrechen, da uns .NET bei der Lösung vorbildlich unterstützt. Die Technologie, die sich dahinter verbirgt, wird als Serialisierung bezeichnet. Die Serialisierung ist ein Prozess mit der Fähigkeit, ein im Hauptspeicher befindliches Objekt in ein bestimmtes Format zu konvertieren und in eine Datei zu schreiben. Das schließt auch die Rekonstruktion der Objekte in ihrem ursprünglichen Format mit ein.

Die Serialisierung ist ein Prozess, der automatisch abläuft und bei dem der Name der Anwendung, der Name der Klasse und die Daten-Member eines Objekts binär gespeichert werden. Dadurch wird die spätere Rekonstruktion in einer exakten Kopie möglich.


Galileo Computing - Zum Seitenanfang

13.1.1 SerialisierungsverfahrenZur vorigen Überschrift

Die dauerhaft zu speichernden Dateninformationen müssen in ein definiertes Format überführt werden, das bei späterer Deserialisierung eine eindeutige Interpretation sicherstellt. Dazu werden die Daten einem Bytestrom übergeben, der für die physikalische Persistenz verantwortlich ist. Die .NET-Klassenbibliothek stellt zur Lösung dieser komplexen Aufgabe drei Klassen bereit.

Tabelle 13.1 Die .NET-Serialisierungsklassen

Klasse Beschreibung

BinaryFormatter

Überträgt die zu serialisierenden Daten in ein binäres Format. Zirkuläre Referenzen werden unterstützt.

SoapFormatter

Überträgt die zu serialisierenden Daten im SOAP-Format (Simple Object Access Protocol). Die Serialisierung erfordert die Einbindung der Bibliothek System.Runtime.Serialization.Formatters.Soap.dll. Zirkuläre Referenzen werden unterstützt.

XmlSerializer

Überträgt die zu serialisierenden Daten im XML-Format. Die Serialisierung erfordert die Einbindung der Bibliothek System.Xml.dll. Zirkuläre Referenzen werden nicht unterstützt.

Sollten die Fähigkeiten der drei Serialisierungsklassen für eine bestimmte Anforderung unzureichend sein, können Sie auch eine eigene entwickeln. Alle drei Typen stellen für die Serialisierung und die Deserialisierung jeweils eine Methode zur Verfügung: Serialize und Deserialize.

Betrachten wir zuerst die Definition von Serialize:

public void Serialize(Stream, object); 

Dem ersten Argument wird die Referenz auf ein Objekt vom Typ Stream übergeben. Dabei wird es sich meistens um ein FileStream-Objekt handeln, das die serialisierten Daten in einer Datei speichert. Die Referenz des Objekts, das serialisiert werden soll, wird dem zweiten Parameter übergeben.

Zur Rekonstruktion eines Objekts dient die Methode Deserialize:

public object Deserialize(Stream);

Der Parameter erwartet eine Stream-Referenz, die auf die zuvor serialisierten Daten des Objekts verweist. Der Rückgabewert ist vom Typ Object und muss deshalb noch in den richtigen Typ konvertiert werden.

In diesem Kapitel werden wir uns ausschließlich mit der binären Serialisierung beschäftigen. Die XML-Serialisierung folgt in Kapitel 14.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de