Serializzazione in MFC
In questo articolo viene illustrato il meccanismo di serializzazione fornito con la libreria MFC (Microsoft Foundation Class) per consentire agli oggetti persista tra l'esecuzione del programma.
La serializzazione è il processo di scrittura o lettura di un oggetto o da un supporto di un archivio permanente come un file su disco.La serializzazione è ideale per le situazioni in cui è necessario gestire lo stato dei dati strutturati (ad esempio le classi o strutture C++) durante o dopo l'esecuzione di un programma.Utilizzo di oggetti di serializzazione forniti da MFC consente che questo si verifichi in un modo standard e coerente, sollevante l'utente dalla necessità di eseguire manualmente le operazioni sui file.
MFC fornisce supporto incorporato della serializzazione nella classe CObject.Pertanto, tutte le classi derivate da CObject possono utilizzare il protocollo di serializzazione di entity_CODECObject.
L'idea di base della serializzazione è che un oggetto deve poter scrivere il relativo stato corrente, in genere indicato dal valore delle variabili membro, in un archivio permanente.In seguito, l'oggetto può essere ricreato mediante la lettura, o deserializzazione, lo stato dell'oggetto dall'archiviazione.La serializzazione gestisce tutti i dettagli dei puntatori all'oggetto e i riferimenti circolari a oggetti che vengono utilizzati per serializzare un oggetto.Un aspetto fondamentale è che l'oggetto stesso è responsabile della lettura e la scrittura dello stato.Pertanto, affinché la classe sia serializzabile, deve implementare le operazioni di base di serializzazione.Come illustrato nel gruppo di serializzazione di articoli, è facile aggiungere questa funzionalità a una classe.
MFC utilizza un oggetto della classe di CArchive intermediaria tra l'oggetto da serializzare e il supporto di archiviazione.Questo oggetto è sempre associato a un oggetto di CFile , che ottiene le informazioni necessarie per la serializzazione, inclusi il nome file e se l'operazione richiesta è in lettura e scrittura.L'oggetto che esegue un'operazione di serializzazione può utilizzare l'oggetto di CArchive indipendentemente dalla natura del supporto di archiviazione.
Un oggetto di CArchive vengono utilizzati operatori di overload di inserimento (<<) e di estrazione (>>) per eseguire la scrittura e le operazioni di lettura.Per ulteriori informazioni, vedere CObjects archiviante e di carico tramite un archivio la serializzazione dell'articolo: serializzare un oggetto.
[!NOTA]
Non confondere la classe di CArchive con le classi iostream di utilizzo generale, che sono del testo formattato.La classe di CArchive riguarda gli oggetti serializzati in formato binario.
Se lo si desidera, è possibile ignorare la serializzazione di MFC per creare un meccanismo per l'archiviazione dei dati persistenti.Sarà necessario eseguire l'override del membro della classe si esegue la serializzazione avviata al comando dell'utente.Vedere la sezione in nota tecnica 22 dei comandi di ID_FILE_SAVE_AS e di ID_FILE_SAVEstandard, di ID_FILE_OPEN.
I seguenti articoli vengono esaminati i due attività principali necessari per la serializzazione:
L'articolo serializzazione: Serializzazione sulle attività del database viene descritto quando la serializzazione è una tecnica appropriata di input/output nelle applicazioni di database.