Serialisierung in MFC

In diesem Artikel wird der serialisierungsmechanismus erläutert, der in der Microsoft Foundation Class Library (MFC) bereitgestellt wird, damit Objekte zwischen Denläufen Ihres Programms beibehalten werden können.

Serialisierung ist der Prozess des Schreibens oder Lesens eines Objekts in oder aus einem beständigen Speichermedium wie z. B. einer Datenträgerdatei. Die Serialisierung eignet sich ideal für Situationen, in denen der Status strukturierter Daten (z. B. C++-Klassen oder -Strukturen) während oder nach der Ausführung eines Programms Standard werden soll. Durch die Verwendung der von MFC bereitgestellten Serialisierungsobjekte kann dies in einer standard- und konsistenten Weise erfolgen, wodurch der Benutzer von der Notwendigkeit, Dateivorgänge manuell auszuführen, zu entlasten.

MFC liefert integrierte Unterstützung für die Serialisierung in der Klasse CObject. Daher können alle von ihnen abgeleiteten CObject Klassen das CObjectSerialisierungsprotokoll nutzen.

Die Grundlegende Idee der Serialisierung besteht darin, dass ein Objekt in der Lage sein sollte, seinen aktuellen Zustand zu schreiben, der in der Regel durch den Wert seiner Membervariablen angegeben wird, in beständigen Speicher. Später kann das Objekt durch Lesen oder Deserialisieren des Zustands des Objekts aus dem Speicher neu erstellt werden. Die Serialisierung behandelt alle Details von Objektzeigern und Zirkelbezügen auf Objekte, die beim Serialisieren eines Objekts verwendet werden. Ein wichtiger Punkt ist, dass das Objekt selbst für das Lesen und Schreiben seines eigenen Zustands verantwortlich ist. Damit eine Klasse serialisierbar ist, muss sie die grundlegenden Serialisierungsvorgänge implementieren. Wie in der Serialisierungsgruppe von Artikeln gezeigt, ist es einfach, diese Funktionalität einer Klasse hinzuzufügen.

MFC verwendet ein Objekt der CArchive Klasse als Zwischenmittel zwischen dem zu serialisierenden Objekt und dem Speichermedium. Dieses Objekt ist immer einem CFile Objekt zugeordnet, von dem aus die erforderlichen Informationen für die Serialisierung abgerufen werden, einschließlich des Dateinamens und ob der angeforderte Vorgang ein Lese- oder Schreibzugriff ist. Das Objekt, das einen Serialisierungsvorgang durchführt, kann das CArchive Objekt ohne Berücksichtigung der Art des Speichermediums verwenden.

Ein CArchive Objekt verwendet überladene Einfüge- und Extraktionsoperatoren (<<>>) zum Ausführen von Schreib- und Lesevorgängen. Weitere Informationen finden Sie unter Speichern und Laden von CObjects über ein Archiv im Artikel Serialisierung: Serialisieren eines Objekts.

Hinweis

Verwechseln Sie die CArchive Klasse nicht mit allgemeinen Iostream-Klassen, die nur für formatierten Text vorgesehen sind. Die CArchive Klasse ist für serialisierte Objekte im Binärformat vorgesehen.

Wenn Sie möchten, können Sie die MFC-Serialisierung umgehen, um einen eigenen Mechanismus für die persistente Datenspeicherung zu erstellen. Sie müssen die Klassenmemempffunktionen überschreiben, die die Serialisierung beim Befehl des Benutzers initiieren. Weitere Informationen finden Sie in den Technischen Hinweisen 22 der ID_FILE_OPEN, ID_FILE_SAVE und ID_FILE_SAVE_AS Standardbefehle.

In den folgenden Artikeln werden die beiden Standard Aufgaben behandelt, die für die Serialisierung erforderlich sind:

Der Artikel Serialisierung: Serialisierung im Vergleich zur Datenbankeingabe/-ausgabe beschreibt, wann die Serialisierung eine geeignete Eingabe-/Ausgabetechnik in Datenbankanwendungen ist.

Siehe auch

Konzepte
Allgemeine MFC-Themen
CArchive-Klasse
CObject-Klasse
CDocument-Klasse
CFile-Klasse