Serialisierung: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: Serialisierung bezeichnet den Vorgang, ein Objekt in einen Datenstrom umzuwandeln. Dieser kann dann auf einer Festplatte gespeichert oder über ein Netzwerk übertr...)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Serialisierung bezeichnet den Vorgang, ein [[Objekt]] in einen Datenstrom umzuwandeln. Dieser kann dann auf einer Festplatte gespeichert oder über ein Netzwerk übertragen werden.
Serialisierung<ref name="RunTimeRerial">http://msdn.microsoft.com/en-us/magazine/cc301761.aspx Jeffrey Richter: Run-time Serialization</ref> bezeichnet den Vorgang, ein [[Objekt]] in einen Datenstrom umzuwandeln. Dieser kann dann auf einer Festplatte gespeichert oder über ein Netzwerk übertragen werden.


Es gibt mehrere Möglichkeiten, ein Objekt zu serialisieren.
Es gibt mehrere Möglichkeiten, ein Objekt zu serialisieren.
Zeile 34: Zeile 34:
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
DateTime dt = (DateTime)bf.Deserialize(fs);
DateTime dt = (DateTime)bf.Deserialize(fs);
</source><noinclude>
</source>
Man muss dabei beachten, daß die Klasse <tt>BinaryFormatter</tt><ref name="BinFormatter">http://msdn.microsoft.com/de-de/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx MASDN-Artikel zur Klasse BinaryFormatter</ref> wesentlich mehr kann als die Klasse <tt>XmlSerializer</tt><ref name=XmlSrielizer">http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx MSDN-Artikel zur Klasse XmlSerializer</ref>, die dafür auch auf der [[XBox 360]] zur Verfügung steht.
 
Auf MSDN gibt es auch einen Webcast über das Thema<ref name="SerWebcast">http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032292924&EventCategory=3&culture=en-US&CountryCode=US MSDN Webcast: Advanced Serialization (Level 300)</ref><noinclude>
== Referenzen ==
== Referenzen ==
<references />
<references />
[[Kategorie:CSharp]][[Kategorie:Code-Beispiele]][[Kategorie:Begriffe]]</noinclude>
[[Kategorie:CSharp]][[Kategorie:Code-Beispiele]][[Kategorie:Begriffe]][[Kategorie:VideoTutorials]]</noinclude>

Version vom 8. Mai 2009, 10:50 Uhr

Serialisierung[1] bezeichnet den Vorgang, ein Objekt in einen Datenstrom umzuwandeln. Dieser kann dann auf einer Festplatte gespeichert oder über ein Netzwerk übertragen werden.

Es gibt mehrere Möglichkeiten, ein Objekt zu serialisieren.

Binary Serialization
Das Objekt wird in einem Binärformat gespeichert. Es kann nur von .NET gelesen werden.
XML Serialization
Das Objekt wird in ein XML-Format serialisiert. Es kann dadruch relativ einfach auch auf anderen Plattformen gelesen werden.
SOAP
Stadardisiertes Verfahren um Objekte zu serialisieren. Dadurch extrem einfach für andere Plattformen aber auch etwas schwerer für den Menschen zu lesen.

Um Ein Objekt zu serialisieren braucht es extrem wenig Code. Man sollte allerdings beachten, daß nur sinnvolle Daten serialisiert werden. Instanzen der Klasse File können aus offensichtlichen Gründen zum Beispiel nicht serialisiert werden.

Als erstes markiert man die zu serialisierende Klasse mit dem Attribut

[Serializable]

In der Standardeinstellung werden alle Felder und Properties dieser Klasse serialisiert, auch die privaten. Um das zu verhindern kann man diese mit dem Attribut

[NonSerialized]

markieren.

Man muss allerdings beachten, daß XmlSerializer keine privaten Felder und Properties serialisiert.

Um ein Objekt dann in eine Datei zu speichern führt man folgenden Code aus:

System.IO.FileStream fs = System.IO.File.Open("DateiName", System.IO.FileMode.Truncate);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(fs, DateTime.Now);

Um das Objekt wieder einzulesen benutzt man folgende Zeilen:

System.IO.FileStream fs = System.IO.File.Open("DateiName", System.IO.FileMode.Open);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
DateTime dt = (DateTime)bf.Deserialize(fs);

Man muss dabei beachten, daß die Klasse BinaryFormatter[2] wesentlich mehr kann als die Klasse XmlSerializer[3], die dafür auch auf der XBox 360 zur Verfügung steht.

Auf MSDN gibt es auch einen Webcast über das Thema[4]

Referenzen