Serialisierung (C# und Visual Basic)

der Serialisierung wird ein Objekt in einen Stream von Bytes, um das Objekt oder es Senden an Arbeitsspeicher, einer Datenbank oder einer Datei zu speichern.Dies geschieht hauptsächlich, um den Zustand des Objekts zu speichern, damit dieses später bei Bedarf wiederhergestellt werden kann.Der umgekehrte Vorgang wird als Deserialisierung bezeichnet.

Beispiele der Serialisierung finden Sie unter Verwandte Themen und Beispiele weiter unten in diesem Thema.

Ablauf der Serialisierung

In dieser Abbildung ist der Ablauf der Serialisierung dargestellt.

Grafik zur Serialisierung

Der serialisierte Stream enthält nicht nur die Daten für das Objekt, sondern auch Informationen zu dessen Typ, beispielsweise zur Version, zur Kultur und zum Assemblynamen.Mithilfe dieses Streams kann das Objekt in einer Datenbank, einer Datei oder im Arbeitsspeicher gespeichert werden.

ms233843.collapse_all(de-de,VS.110).gifVerwendungsmöglichkeiten für die Serialisierung

Durch Serialisierung kann der Zustand eines Objekts gespeichert und dieses bei Bedarf wiederhergestellt werden. Dieses Verfahren kann sowohl für die Speicherung von Objekten als auch für den Datenaustausch eingesetzt werden.Serialisierung ermöglicht es beispielsweise, ein Objekt über einen Webservice an eine Remoteanwendung zu senden, von einer Domäne an eine andere zu übergeben, als XML-Zeichenfolge durch eine Firewall zu leiten oder sicherheits- und benutzerabhängige Informationen anwendungsübergreifend beizubehalten.

ms233843.collapse_all(de-de,VS.110).gifKonfigurieren eines Objekts als serialisierbares Objekt

Zum Serialisieren eines Objekts benötigen Sie das Objekt, das serialisiert werden soll, einen Stream, der das serialisierte Objekt enthält, und ein Formatter-Element.System.Runtime.Serialization enthält die für das Serialisieren und Deserialisieren von Objekten erforderlichen Klassen.

Wenden Sie das SerializableAttribute-Attribut auf einen Typ an, um anzugeben, dass Instanzen dieses Typs serialisiert werden können.Wenn der Typ nicht über das SerializableAttribute-Attribut verfügt, wird beim Versuch einer Serialisierung eine SerializationException-Ausnahme ausgelöst.

Wenn ein bestimmtes Feld innerhalb einer Klasse nicht serialisierbar sein soll, wenden Sie das NonSerializedAttribute-Attribut an.Wenn ein Feld eines serialisierbaren Typs einen Zeiger, ein Handle oder eine andere Datenstruktur enthält, die für eine bestimmte Umgebung spezifisch ist und in einer anderen Umgebung nicht sinnvoll ersetzt werden kann, ist es ratsam, das betreffende Feld als nicht serialisierbar zu kennzeichnen.

Wenn eine serialisierte Klasse Verweise auf Objekte anderer Klassen enthält, die mit SerializableAttribute gekennzeichnet sind, werden diese Objekte ebenfalls serialisiert.

Binäre Serialisierung und XML-Serialisierung

Sie können sowohl binäre Serialisierung als auch XML-Serialisierung verwenden.Bei der binären Serialisierung werden alle Member (auch schreibgeschützte Member) serialisiert, und es kann eine höhere Leistung genutzt werden.Die XML-Serialisierung bietet hingegen einen lesbareren Code sowie eine höhere Flexibilität bei der gemeinsamen Nutzung von Objekten und beim Datenaustausch.

ms233843.collapse_all(de-de,VS.110).gifBinäre Serialisierung

Bei der Binärserialisierung wird durch eine binäre Codierung ein kompaktes Format erzeugt, das besonders für die Speicherung und für socketbasierte Netzwerkstreams geeignet ist.

ms233843.collapse_all(de-de,VS.110).gifXML-Serialisierung

Bei der XML-Serialisierung werden die öffentlichen Felder und Eigenschaften eines Objekts bzw. die Parameter und Rückgabewerte von Methoden in einen XML-Stream serialisiert, der einem bestimmtem XSD (XML Schema Definition)-Dokument entspricht.Die XML-Serialisierung führt zu stark typisierten Klassen mit öffentlichen Eigenschaften und Feldern, die in XML konvertiert werden.System.Xml.Serialization enthält die notwendigen Klassen für die XML-Serialisierung und -Deserialisierung.

Sie können Attribute auf Klassen und Klassenmembern anwenden, um festzulegen, wie XmlSerializer Instanzen dieser Klasse serialisiert bzw. deserialisiert.

ms233843.collapse_all(de-de,VS.110).gifSOAP-Serialisierung

Durch XML-Serialisierung können auch Objekte in XML-Streams serialisiert werden, die der SOAP-Spezifikation entsprechen.SOAP ist ein auf XML basierendes Protokoll, das speziell für die Weitergabe von Prozeduraufrufen unter Verwendung von XML entwickelt wurde.Ebenso wie bei der regulären XML-Serialisierung können diese Attribute auch verwendet werden, um die durch einen XML-Webdienst generierten literalen SOAP-Meldungen zu steuern.

Einfache und benutzerdefinierte Serialisierung

Für die Serialisierung stehen zwei Varianten zur Verfügung: einfache Serialisierung und benutzerdefinierte Serialisierung.Bei der einfachen Serialisierung wird das Objekt mithilfe von .NET Framework automatisch serialisiert.

ms233843.collapse_all(de-de,VS.110).gifEinfache Serialisierung

Die einzige Anforderung bei der einfachen Serialisierung besteht in der Anwendung des SerializableAttribute-Attributs auf das Objekt.Mit NonSerializedAttribute können einzelne Felder von der Serialisierung ausgeschlossen werden.

Bei der einfachen Serialisierung kann die Verwendung verschiedener Objektversionen zu Problemen führen. In diesem Fall empfiehlt es sich, die benutzerdefinierte Serialisierung zu verwenden.Die einfache Serialisierung ist leicht verwendbar, bietet aber nur wenige Möglichkeiten zur Steuerung des Serialisierungsvorgangs.

ms233843.collapse_all(de-de,VS.110).gifBenutzerdefinierte Serialisierung

Bei der benutzerdefinierten Serialisierung können Sie genau angeben, welche Objekte serialisiert werden und wie die Serialisierung ausgeführt wird.Hierfür muss die betreffende Klasse mit dem SerializableAttribute gekennzeichnet sein und die ISerializable-Schnittstelle implementieren.

Wenn das Objekt ebenfalls benutzerdefiniert deserialisiert werden soll, müssen Sie einen benutzerdefinierten Konstruktor verwenden.

Designerserialisierung

Die Designerserialisierung ist eine spezielle Form der Serialisierung, bei der die Art von Objektdauerhaftigkeit verwendet wird, die im Allgemeinen bei Entwicklungstools verwendet wird.Bei der Designerserialisierung wird ein Objektdiagramm in eine Quelldatei konvertiert, die später für die Wiederherstellung des Objektdiagramms verwendet werden kann.Eine Quelldatei kann Code, Markup und sogar SQL-Tabelleninformationen enthalten.Weitere Informationen finden Sie unter Übersicht über die Designerserialisierung.

Verwandte Themen und Beispiele