Partager via


Sérialisation dans MFC

Cet article explique le mécanisme de sérialisation fourni dans la bibliothèque de classes Microsoft Foundation (MFC) pour permettre aux objets de persister entre les exécutions de votre programme.

La sérialisation est le processus d’écriture ou de lecture d’un objet vers ou à partir d’un support de stockage persistant tel qu’un fichier disque. La sérialisation est idéale pour les situations où il est souhaité maintenir l’état des données structurées (telles que les classes ou structures C++) pendant ou après l’exécution d’un programme. L’utilisation des objets de sérialisation fournis par MFC permet de se produire de manière standard et cohérente, ce qui permet à l’utilisateur d’effectuer des opérations de fichier manuellement.

MFC fournit la prise en charge intégrée de la sérialisation dans la classe CObject. Ainsi, toutes les classes dérivées de CObject peuvent tirer parti du protocole de CObjectsérialisation.

L’idée de base de la sérialisation est qu’un objet doit être en mesure d’écrire son état actuel, généralement indiqué par la valeur de ses variables membres, dans le stockage persistant. Plus tard, l’objet peut être recréé en lisant ou désérialisant l’état de l’objet à partir du stockage. La sérialisation gère tous les détails des pointeurs d’objet et des références circulaires aux objets utilisés lorsque vous sérialisez un objet. Un point clé est que l’objet lui-même est responsable de la lecture et de l’écriture de son propre état. Ainsi, pour qu’une classe soit sérialisable, elle doit implémenter les opérations de sérialisation de base. Comme indiqué dans le groupe d’articles sérialisation, il est facile d’ajouter cette fonctionnalité à une classe.

MFC utilise un objet de la CArchive classe comme intermédiaire entre l’objet à sérialiser et le support de stockage. Cet objet est toujours associé à un CFile objet, à partir duquel il obtient les informations nécessaires pour la sérialisation, y compris le nom de fichier et si l’opération demandée est une lecture ou une écriture. L’objet qui effectue une opération de sérialisation peut utiliser l’objet CArchive sans tenir compte de la nature du support de stockage.

Un CArchive objet utilise des opérateurs d’insertion surchargé (<<) et d’extraction (>>) pour effectuer des opérations d’écriture et de lecture. Pour plus d’informations, consultez Stockage et chargement de CObjects via une archive dans l’article Sérialisation : sérialisation d’un objet.

Remarque

Ne confondez pas la CArchive classe avec les classes iostream à usage général, qui sont uniquement destinées au texte mis en forme. La CArchive classe concerne les objets sérialisés au format binaire.

Si vous le souhaitez, vous pouvez contourner la sérialisation MFC pour créer votre propre mécanisme de stockage de données persistant. Vous devez remplacer les fonctions membres de classe qui lancent la sérialisation à la commande de l’utilisateur. Consultez la discussion de la note technique 22 des commandes ID_FILE_OPEN, ID_FILE_SAVE et ID_FILE_SAVE_AS commandes standard.

Les articles suivants couvrent les deux principales tâches requises pour la sérialisation :

L’article Sérialisation : Sérialisation et sortie de base de données décrit quand la sérialisation est une technique d’entrée/sortie appropriée dans les applications de base de données.

Voir aussi

Concepts relatifs aux SMS
Rubriques MFC générales
CArchive, classe
CObject, classe
CDocument, classe
CFile, classe