Compartir vía


Serialización en MFC

En este artículo se explica el mecanismo de serialización que se ofrece en la biblioteca MFC (Microsoft Foundation Class) para permitir que los objetos se conserven entre ejecuciones del programa.

La serialización es el proceso de escritura o lectura de un objeto en un medio de almacenamiento persistente o desde este como, por ejemplo, un archivo de disco. La serialización es ideal para situaciones en las que se desea mantener el estado de los datos estructurados (como clases o estructuras de C++) durante o después de la ejecución de un programa. El uso de los objetos de serialización que ofrece MFC permite que esto se produzca de forma estándar y coherente, lo que evita al usuario la necesidad de realizar operaciones de archivos manualmente.

MFC proporciona compatibilidad integrada para la serialización en la clase CObject. Por lo tanto, todas las clases derivadas de CObject pueden aprovechar el protocolo de serialización de CObject.

La idea básica de la serialización es que un objeto debe poder escribir su estado actual, indicado normalmente por los valores de sus variables miembro, en el almacenamiento persistente. Más adelante, se puede volver a crear el objeto al leer o deserializar el estado del objeto del almacenamiento. La serialización controla todos los detalles de los punteros y referencias circulares a objetos que se utilizan cuando se serializa un objeto. Lo importante a tener en cuenta es que el propio objeto es responsable de leer y escribir su propio estado. Por lo tanto, para que una clase sea serializable, debe implementar las operaciones de serialización básicas. Como se muestra en el grupo serialización de artículos, es fácil agregar esta funcionalidad a una clase.

MFC usa un objeto de la clase CArchive como intermediario entre el objeto que se va a serializar y el medio de almacenamiento. Este objeto siempre se asocia a un objeto CFile, desde el que obtiene la información necesaria para la serialización, incluido el nombre de archivo y si la operación solicitada es de lectura o escritura. El objeto que realiza una operación de serialización puede usar el objeto CArchive sin tener en cuenta la naturaleza del medio de almacenamiento.

Un objeto CArchive usa operadores de inserción (<<) y extracción (>>) sobrecargados para realizar operaciones de escritura y lectura. Para más información, consulte Almacenar y cargar CObjects a través de un archivo en el artículo Serialización: Serializar un objeto.

Nota:

No confunda la clase CArchive con clases iostream de uso general, que tienen el formato solo texto. La clase CArchive es para objetos serializados en formato binario.

Si lo desea, puede omitir la serialización de MFC para crear su propio mecanismo para el almacenamiento de datos persistente. Tendrá que invalidar las funciones miembro de clase que inician la serialización en el comando del usuario. Consulte la explicación de la nota técnica 22 sobre los comandos estándar de ID_FILE_OPEN, ID_FILE_SAVE y ID_FILE_SAVE_AS.

En los siguientes artículos se tratan las dos tareas principales necesarias para la serialización:

El artículo Serialización: Serialización frente a entrada y salida de bases de datos describe cuándo la serialización es una técnica de entrada y salida adecuada en las aplicaciones de base de datos.

Consulte también

Conceptos
Temas generales de MFC
CArchive (clase)
CObject (clase)
CDocument (clase)
CFile (clase)