Serializace v prostředí MFC
Tento článek vysvětluje mechanismus serializace poskytovaný v knihovně microsoft Foundation Class Library (MFC), aby objekty zůstaly mezi běhy programu.
Serializace je proces zápisu nebo čtení objektu do nebo z trvalého úložného média, jako je například diskový soubor. Serializace je ideální pro situace, kdy je žádoucí zachovat stav strukturovaných dat (například tříd nebo struktur jazyka C++) během nebo po spuštění programu. Použití serializačních objektů, které poskytuje MFC, to umožňuje, aby k tomu došlo standardním a konzistentním způsobem, a odlehčuje uživateli od potřeby provádět operace se soubory ručně.
MFC poskytuje integrovanou podporu serializace ve třídě CObject
. Proto všechny třídy odvozené z CObject
mohou využít ' CObject
s serializace protokolu.
Základní myšlenkou serializace je, že objekt by měl být schopen zapsat svůj aktuální stav, obvykle označenou hodnotou jejích členských proměnných, do trvalého úložiště. Později lze objekt znovu vytvořit čtením nebo deserializací stavu objektu z úložiště. Serializace zpracovává všechny podrobnosti o ukazatelích objektů a cyklických odkazech na objekty, které se používají při serializaci objektu. Klíčovým bodem je, že samotný objekt zodpovídá za čtení a zápis vlastního stavu. Proto, aby třída byla serializovatelná, musí implementovat základní serializační operace. Jak je znázorněno ve skupině serializace článků, je snadné přidat tuto funkci do třídy.
MFC používá objekt CArchive
třídy jako zprostředkující mezi objektem, který má být serializován a médium úložiště. Tento objekt je vždy přidružený k objektu CFile
, ze kterého získá potřebné informace pro serializaci, včetně názvu souboru a zda je požadovaná operace čtení nebo zápisu. Objekt, který provádí operaci serializace, může použít CArchive
objekt bez ohledu na povahu úložného média.
Objekt CArchive
používá k provádění operací zápisu a čtení přetížené operátory vložení (<<) a extrakce (>>). Další informace naleznete v tématu Ukládání a načítání objektů CObject prostřednictvím archivu v článku Serializace: Serializace objektu.
Poznámka
Nezaměňujte CArchive
třídu s třídami iostream pro obecné účely, které jsou určené pouze pro formátovaný text. Třída CArchive
je určena pro serializované objekty binárního formátu.
Pokud chcete, můžete obejít serializaci MFC a vytvořit vlastní mechanismus pro trvalé úložiště dat. Budete muset přepsat členské funkce třídy, které zahájí serializaci v příkazu uživatele. Prohlédněte si diskuzi v technické poznámce 22 standardních příkazů ID_FILE_OPEN, ID_FILE_SAVE a ID_FILE_SAVE_AS.
Následující články popisují dva hlavní úlohy potřebné pro serializaci:
Článek Serializace: Serializace vs. Vstup/výstup databáze popisuje, kdy serializace je vhodná metoda vstupu/výstupu v databázových aplikacích.
Viz také
Koncepty
Obecná témata MFC
CArchive – třída
CObject – třída
CDocument – třída
CFile – třída