Binäre SerialisierungBinary serialization

Die Serialisierung kann als Prozess der Speicherung eines Objektzustands in einem Speichermedium definiert werden.Serialization can be defined as the process of storing the state of an object to a storage medium. Im Rahmen dieses Vorgangs werden die öffentlichen und privaten Felder des Objekts und der Name der Klasse, einschließlich der Assembly, die die Klasse enthält, in einen Bytestream umgewandelt, der dann in einen Datenstream geschrieben wird.During this process, the public and private fields of the object and the name of the class, including the assembly containing the class, are converted to a stream of bytes, which is then written to a data stream. Wenn das Objekt anschließend deserialisiert wird, wird ein genauer Klon des ursprünglichen Objekts erstellt.When the object is subsequently deserialized, an exact clone of the original object is created.

Bei der Implementierung eines Serialisierungsmechanismus in einer objektorientierten Umgebung muss vielfach zwischen einfacher Handhabung und Flexibilät abgewogen werden.When implementing a serialization mechanism in an object-oriented environment, you have to make a number of tradeoffs between ease of use and flexibility. Dieser Vorgang lässt sich größtenteils automatisieren, sofern Sie ausreichend Kontrolle über den Vorgang haben.The process can be automated to a large extent, provided you are given sufficient control over the process. Es kann beispielsweise Situationen geben, in denen eine einfache binäre Serialisierung nicht ausreichend ist, oder aus einem bestimmt Grund kann es erforderlich sein zu entscheiden, welche Felder einer Klasse serialisiert werden müssen.For example, situations may arise where simple binary serialization is not sufficient, or there might be a specific reason to decide which fields in a class need to be serialized. In den folgenden Abschnitten wird der robuste Serialisierungsmechanismus untersucht, der von .NET bereitgestellt wird, und es werden einige wichtige Funktionen hervorgehoben, mit denen Sie diesen Vorgang an Ihre Anforderungen anpassen können.The following sections examine the robust serialization mechanism provided with .NET and highlight a number of important features that allow you to customize the process to meet your needs.

Hinweis

Der Zustand eines UTF-8- oder UTF-7-codierten Objektes wird nicht beibehalten, wenn das Objekt mit verschiedenen Versionen von .NET Framework serialisiert und deserialisiert wird.The state of a UTF-8 or UTF-7 encoded object is not preserved if the object is serialized and deserialized using different .NET Framework versions.

Warnung

Die binäre Serialisierung kann gefährlich sein.Binary serialization can be dangerous. Deserialisieren Sie niemals Daten aus nicht vertrauenswürdigen Quellen, und führen Sie niemals eine Schleife für serialisierte Daten in Systeme durch, die Sie nicht steuern.Never deserialize data from an untrusted source and never round-trip serialized data to systems not under your control.

Die Art der binären Serialisierung ermöglicht die Änderung der privaten Member innerhalb eines Objekts. Somit wird deren Status geändert. Andere Serialisierungsframeworks wie JSON.NET, die auf der öffentlichen API-Oberfläche ausgeführt werden, werden empfohlen.As the nature of binary serialization allows the modification of private members inside an object and therefore changing the state of it, other serialization frameworks like JSON.NET which operate on the public API surface are recommended.

Binäre Serialisierung in .NET CoreBinary serialization in .NET Core

.NET Core unterstützt binäre Serialisierung mit einer Teilmenge der Typen..NET Core supports binary serialization with a subset of types. Sie finden die Liste der unterstützten Typen im Abschnitt Serialisierbare Typen.You can see the list of supported types in the Serializable types section. Der definierte Satz von Typen kann zwischen .NET Framework 4.5.1 und höheren Versionen und .NET Core 2.0 und höheren Versionen serialisiert werden.The defined set of types are guaranteed to be serializable between .NET Framework 4.5.1 and later versions and .NET Core 2.0 and later versions. Andere Implementierungen von .NET, z.B. Mono, werden nicht offiziell unterstützt, sollten jedoch ebenfalls funktionieren.Other .NET implementations, such as Mono, aren't officially supported but should also be working.

Serialisierbare TypenSerializable types

In diesem AbschnittIn this section

ReferenzReference

  • System.Runtime.Serialization
    Enthält Klassen, mit denen Objekte serialisiert und deserialisiert werden können.Contains classes that can be used for serializing and deserializing objects.