Skip to main content

Cos'è la serializzazione?

Nella programmazione di computer, la serializzazione è il processo di assunzione di una struttura di dati memorizzata nella memoria locale e trasformarla in un flusso di byte che può essere trasmesso su una rete o memorizzata su un disco per essere riassemblato e utilizzato da un altro programmaLa serializzazione può anche essere utilizzata per salvare lo stato di un oggetto in modo che possa essere ricaricato in seguito dallo stesso programma. Un uso più complesso di questa funzione è invocare una chiamata di procedura remota (RPC), eseguendo efficacemente una procedura su un altro computer attraverso una rete. Questo meccanismo consente anche la distribuzione di oggetti dati su un ampio sistema in rete.

Quasi tutti i moderni linguaggio del computer hanno un supporto nativo per la serializzazione o alibreria disponibile per aggiungere questa funzionalità. Quando un oggetto è serializzato, tutti i campi dell'oggetto sono appiattiti. Questo processo è anche noto come sgonfiante o marshalling. I dati vengono trasformati inUna riga unidimensionale di byte che può essere scritta in qualsiasi flusso di output.Il tipo di flusso di output non ha importanza e potrebbe essere un file o una presa di rete.

Una volta che i dati sono stati serializzati e inviati alla sua posizione finale, inizia il processo di deserializzazione. Il programma che si leggeIl flusso di byte ripristina tutte le informazioni e le colloca in una nuova istanza dell'oggetto originale, creando una copia esatta. È importante capire che solo i dati che l'oggetto stava tenendo è stato messo a punto;L'oggetto e i suoi metodi e altri dati di implementazione non lo sono. Ciò significa che il programma che deserializza i dati deve essere in grado di creare un'istanza della classe originariamente serializzata.

La serializzazione della struttura dei dati può essere utilizzataper una varietà di scopi. Le informazioni sull'oggetto possono essere archiviate su supporti fisici in modo che lo stato esatto di ogni oggetto possa essere ripristinato al punto in cui era quando l'esecuzione del programma si interruppe. Può essere utilizzato per inviare messaggi a un altro computer checauserà l'esecuzione di una procedura remota. La serializzazione può anche essere utilizzata per confrontare in modo efficiente le variazioni dello stato nelle applicazioni in tempo reale.

Prima di utilizzare la serializzazione degli oggetti, è importante comprendere alcune delle limitazioni che impone.importante è che, attraverso il processo di conversione di un oggetto in un flusso di byte, i campi dichiarati privati saranno esposti. Durante la trasmissione del flusso, questi dati possono essere catturati e decodificati, presentando abuco di sicurezza. La maggior parte della linguaLe età consentono l'esternalizzazione dei formati di serializzazione dei dati, quindi è possibile la codifica proprietaria per aiutare a mitigare questo rischio.

Un altro fattore da tenere a mente è che la serializzazione funzionerà, in generale, solo con oggetti chesono esattamente gli stessi dell'oggetto serializzato. Se vengono aggiunti nuovi campi o metodi a un oggetto, la firma dell'oggetto cambierà. Ciò significherà che l'oggetto memorizzato lo faràcausare un'eccezione e i dati diventeranno irrecuperabili fino a quando un'istanza dell'oggetto non modificato originale non tenta di ripristinarlo.