Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Serialisierung ist der Prozess der Konvertierung eines Objekts in einen Bytestrom, um das Objekt zu speichern oder an den Speicher, eine Datenbank oder eine Datei zu übertragen. Der Hauptzweck besteht darin, den Zustand eines Objekts zu speichern, um ihn bei Bedarf neu erstellen zu können. Der Umgekehrte Prozess wird als Deserialisierung bezeichnet.
Funktionsweise der Serialisierung
Diese Abbildung zeigt den allgemeinen Serialisierungsprozess.
Das Objekt wird in einen Datenstrom serialisiert, der nicht nur die Daten enthält, sondern Informationen zum Typ des Objekts, z. B. version, Kultur und Assemblyname. Aus diesem Datenstrom kann er in einer Datenbank, einer Datei oder einem Speicher gespeichert werden.
Verwendungen von Serialisierung
Die Serialisierung ermöglicht es dem Entwickler, den Zustand eines Objekts zu speichern und es nach Bedarf neu zu erstellen, wodurch die Speicherung von Objekten sowie der Datenaustausch bereitgestellt wird. Mithilfe der Serialisierung kann ein Entwickler Aktionen wie das Senden des Objekts an eine Remoteanwendung mithilfe eines Webdiensts ausführen, ein Objekt von einer Domäne an eine andere übergeben, ein Objekt über eine Firewall als XML-Zeichenfolge übergeben oder Sicherheits- oder benutzerspezifische Informationen in allen Anwendungen verwalten.
JSON-Serialisierung
Der System.Text.Json Namespace enthält Klassen für die JSON-Serialisierung (JavaScript Object Notation) und deserialisierung. JSON ist ein offener Standard, der häufig zum Freigeben von Daten im Web verwendet wird.
Die JSON-Serialisierung serialisiert die öffentlichen Eigenschaften eines Objekts in eine Zeichenfolge, ein Bytearray oder einen Datenstrom, der der RFC 8259 JSON-Spezifikation entspricht. Um zu steuern, wie JsonSerializer eine Instanz der Klasse serialisiert oder deserialisiert wird, können Sie eine oder mehrere der folgenden Ansätze verwenden:
- Verwenden eines JsonSerializerOptions Objekts
- Anwenden von Attributen aus dem System.Text.Json.Serialization Namespace auf Klassen oder Eigenschaften
- Anpassen des Vertrags
- Implementieren von benutzerdefinierten Konvertern
Binär- und XML-Serialisierung
Der System.Runtime.Serialization Namespace enthält Klassen für binäre und XML-Serialisierung und Deserialisierung.
Bei der binären Serialisierung werden alle Member einschließlich der schreibgeschützten Member serialisiert, und die Leistung wird verbessert. Die XML-Serialisierung bietet besser lesbaren Code sowie eine größere Flexibilität der Objektfreigabe und -verwendung für Interoperabilitätszwecke.
Warnung
Die binäre Serialisierung mit BinaryFormatter
kann gefährlich sein. Weitere Informationen finden Sie im BinaryFormatter-Sicherheitshandbuch und im BinaryFormatter-Migrationshandbuch.
Serialisieren eines Objekts
Zum Serialisieren eines Objekts mit binärer oder XML-Serialisierung benötigen Sie das Objekt zum Serialisieren, einen Datenstrom, der das serialisierte Objekt enthält, und ein Formatter. System.Runtime.Serialization enthält die Klassen, die zum Serialisieren und Deserialisieren von Objekten erforderlich sind.
Wenden Sie das SerializableAttribute Attribut auf einen Typ an, um anzugeben, dass Instanzen dieses Typs serialisiert werden können. Eine SerializationException Ausnahme wird ausgelöst, wenn Sie versuchen zu serialisieren, der Typ aber nicht über das SerializableAttribute Attribut verfügt.
Wenn Sie nicht möchten, dass ein Feld in Ihrer Klasse serialisierbar ist, 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 das Feld in einer anderen Umgebung nicht sinnvoll wiederhergestellt werden kann, sollten Sie es nicht serialisierbar machen.
Wenn eine serialisierte Klasse Verweise auf Objekte anderer Klassen enthält, die gekennzeichnet SerializableAttributesind, werden diese Objekte ebenfalls serialisiert.
Binäre Serialisierung
Binäre Serialisierung verwendet binäre Codierung, um eine kompakte Serialisierung für Verwendungen wie Speicher- oder socketbasierte Netzwerkdatenströme zu erzeugen.
XML-Serialisierung
Die XML-Serialisierung serialisiert die öffentlichen Felder und Eigenschaften eines Objekts oder die Parameter und Rückgabewerte von Methoden in einen XML-Datenstrom, der einem bestimmten XSD-Dokument (XML Schema Definition Language) entspricht. Die XML-Serialisierung führt zu stark typierten Klassen mit öffentlichen Eigenschaften und Feldern, die in XML konvertiert werden. System.Xml.Serialization enthält die Klassen, die zum Serialisieren und Deserialisieren von XML erforderlich sind.
Sie können Attribute auf Klassen und Klassenmitglieder anwenden, um zu kontrollieren, wie die XmlSerializer Instanz der Klasse serialisiert oder deserialisiert.
Grundlegende und benutzerdefinierte Serialisierung
Binäre und XML-Serialisierung können auf zwei Arten ausgeführt werden, einfach und benutzerdefiniert. Die einfache Serialisierung verwendet .NET, um das Objekt automatisch zu serialisieren.
Die einzige Anforderung bei der grundlegenden Serialisierung besteht darin, dass das Objekt das SerializableAttribute Attribut angewendet hat. Dies NonSerializedAttribute kann verwendet werden, damit bestimmte Felder nicht serialisiert werden.
Wenn Sie die grundlegende Serialisierung verwenden, kann die Versionsverwaltung von Objekten Probleme verursachen, in diesem Fall kann eine benutzerdefinierte Serialisierung bevorzugt werden. Die einfache Serialisierung ist die einfachste Möglichkeit zum Ausführen der Serialisierung, bietet aber nicht viel Kontrolle über den Prozess.
In der benutzerdefinierten Serialisierung können Sie genau angeben, welche Objekte serialisiert werden sollen und wie dies geschieht. Die Klasse muss als SerializableAttribute markiert und in die ISerializable-Schnittstelle implementiert sein. Wenn ihr Objekt auch auf benutzerdefinierte Weise deserialisiert werden soll, müssen Sie einen benutzerdefinierten Konstruktor verwenden.
Designerserialisierung
Die Designer serialisierung ist eine spezielle Form der Serialisierung, die die Art der Objektpersistenz umfasst, die normalerweise mit Entwicklungstools verknüpft ist. Die Designer serialisierung ist der Prozess der Konvertierung eines Objektdiagramms in eine Quelldatei, die später zum Wiederherstellen des Objektdiagramms verwendet werden kann. Eine Quelldatei kann Code-, Markup- oder sogar SQL-Tabelleninformationen enthalten.
Verwandte Artikel
Vorgehensweise: Lesen von Objektdaten aus einer XML-Datei (Visual Basic)
Zeigt, wie Objektdaten gelesen werden, die zuvor mithilfe der XmlSerializer Klasse in eine XML-Datei geschrieben wurden.
Vorgehensweise: Schreiben von Objektdaten in eine XML-Datei (Visual Basic)
Zeigt, wie das Objekt aus einer Klasse mithilfe der XmlSerializer Klasse in eine XML-Datei geschrieben wird.