Serializzazione binariaBinary serialization

La serializzazione può essere definita come il processo di archiviazione dello stato di un oggetto su un supporto di archiviazione.Serialization can be defined as the process of storing the state of an object to a storage medium. Durante tale processo, i campi pubblici e privati dell'oggetto e il nome della classe, incluso l'assembly contenente la classe, vengono convertiti in un flusso di byte che viene scritto in un flusso di dati.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. Quando l'oggetto viene successivamente deserializzato, viene creato un clone esatto dell'oggetto originale.When the object is subsequently deserialized, an exact clone of the original object is created.

Quando si implementa un meccanismo di serializzazione in un ambiente orientato agli oggetti, è necessario fare una serie di compromessi tra semplicità di utilizzo e flessibilità.When implementing a serialization mechanism in an object-oriented environment, you have to make a number of tradeoffs between ease of use and flexibility. Il processo può essere automatizzato in un ambito di grandi dimensioni, purché si disponga di controllo sufficiente sul processo.The process can be automated to a large extent, provided you are given sufficient control over the process. Ad esempio, possono verificarsi situazioni in cui non è sufficiente la semplice serializzazione binaria o potrebbe esserci una ragione specifica per decidere quali campi in una classe devono essere serializzati.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. Nelle sezioni seguenti viene esaminato l'avanzato meccanismo di serializzazione fornito con .NET e vengono evidenziate alcune importanti funzionalità che consentono di personalizzare il processo in base alle esigenze.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.

Nota

Lo stato di un oggetto codificato UTF-7 o UTF-8 non viene mantenuto se le relative operazioni di serializzazione e deserializzazione vengono eseguite con versioni di .NET Framework diverse.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.

Avviso

La serializzazione binaria può rappresentare un pericolo.Binary serialization can be dangerous. Non deserializzare mai dati da un'origine non attendibile e non eseguire il round trip per i dati serializzati verso sistemi non sotto il proprio controllo.Never deserialize data from an untrusted source and never round-trip serialized data to systems not under your control.

Poiché la natura della serializzazione binaria consente la modifica di membri privati all'interno di un oggetto e quindi la modifica dello stato dell'oggetto, sono consigliati altri framework di serializzazione, come JSON.NET, che intervengono sulla superficie dell'API pubblica.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.

Serializzazione binaria in .NET CoreBinary serialization in .NET Core

.NET Core supporta la serializzazione binaria con un subset di tipi..NET Core supports binary serialization with a subset of types. È possibile consultare l'elenco dei tipi supportati nella sezione Tipi serializzabili.You can see the list of supported types in the Serializable types section. È garantita la serializzazione dei tipi definiti tra .NET Framework 4.5.1 e versioni successive e tra .NET Core 2.0 e versioni successive.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. Altre implementazioni di .NET, ad esempio Mono, non sono ufficialmente supportate ma dovrebbero comunque funzionare.Other .NET implementations, such as Mono, aren't officially supported but should also be working.

Tipi serializzabiliSerializable types

Contenuto della sezioneIn this section

RiferimentiReference

  • System.Runtime.Serialization
    Contiene classi utilizzabili per la serializzazione e la deserializzazione di oggetti.Contains classes that can be used for serializing and deserializing objects.