Archiviazione persistente

È spesso necessario archiviare i valori dei campi di un oggetto su disco per recuperarli in una fase successiva. Nonostante questa operazione sia facilmente eseguibile senza dover utilizzare la serializzazione, risulta spesso lenta, soggetta ad errori e diventa progressivamente più complessa quando è necessario tracciare la gerarchia degli oggetti. Si supponga di creare una applicazione aziendale di grandi dimensioni che contiene migliaia di oggetti e di dover scrivere il codice per salvare e ripristinare i campi e le proprietà da e su disco per ogni oggetto. La serializzazione rappresenta un utile meccanismo per raggiungere questo obiettivo con il minimo sforzo.

Common Language Runtime gestisce la posizione degli oggetti nella memoria e offre un meccanismo di serializzazione automatizzata utilizzando la reflection. Quando un oggetto viene serializzato, il nome della classe, l'assembly e tutti i membri dati dell'istanza della classe vengono archiviati. Gli oggetti spesso archiviano riferimenti ad altre istanze nelle variabili membro. Quando la classe viene serializzata, il modulo di gestione della serializzazione tiene traccia di tutti gli oggetti a cui si fa riferimento già serializzati, per garantire che lo stesso oggetto non venga serializzato più di una volta. L'architettura di serializzazione disponibile in .NET Framework gestisce automaticamente e in modo corretto gli oggetti grafici e i riferimenti circolari. L'unico requisito richiesto per gli oggetti grafici è che tutti gli oggetti a cui l'oggetto da serializzare fa riferimento siano contrassegnati come Serializable (vedere Serializzazione di base). Se questa condizione non viene soddisfatta, quando il serializzatore tenta di serializzare l'oggetto non contrassegnato verrà generata un'eccezione.

Quando la classe serializzata viene deserializzata, la classe verrà ricreata e i valori di tutti i membri dati verranno ripristinati automaticamente.

Vedere anche

Nozioni di serializzazione | Accesso a oggetti in altri domini applicazione mediante .NET Remoting | Serializzazione XML