Udostępnij przez


Serializacja w MFC

W tym artykule wyjaśniono mechanizm serializacji udostępniony w bibliotece klas programu Microsoft Foundation (MFC), aby umożliwić utrwalanie obiektów między przebiegami programu.

Serializacja to proces zapisywania lub odczytywania obiektu do lub z trwałego nośnika pamięci, takiego jak plik na dysku. Serializacja jest idealna w sytuacjach, w których należy zachować stan danych ustrukturyzowanych (takich jak klasy lub struktury języka C++) podczas lub po wykonaniu programu. Użycie obiektów serializacji udostępnianych przez MFC umożliwia takie działanie w standardowy i spójny sposób, uwalniając użytkownika od konieczności ręcznego wykonywania operacji na plikach.

MFC dostarcza wbudowaną obsługę serializacji w klasie CObject. W związku z tym wszystkie klasy dziedziczące po klasie CObject mogą korzystać z protokołu serializacji CObject.

Podstawową ideą serializacji jest to, że obiekt powinien mieć możliwość zapisania jego bieżącego stanu, zwykle wskazywanego przez wartość zmiennych składowych, do magazynu trwałego. Później obiekt można utworzyć ponownie, odczytując lub deserializując stan obiektu z pamięci. Serializacja obsługuje wszystkie szczegóły wskaźników do obiektów i cyklicznych odniesień do obiektów, które są używane podczas serializacji obiektu. Kluczowym punktem jest to, że sam obiekt jest odpowiedzialny za odczytywanie i zapisywanie własnego stanu. W związku z tym, aby klasa była serializowalna, musi zaimplementować podstawowe operacje serializacji. Jak pokazano w grupie Serializacji artykułów, łatwo jest dodać tę funkcję do klasy.

MFC używa obiektu klasy CArchive jako pośrednika między obiektem do serializacji a nośnikiem danych. Ten obiekt jest zawsze skojarzony z obiektem CFile , z którego uzyskuje niezbędne informacje dotyczące serializacji, w tym nazwę pliku i informację, czy żądana operacja jest operacją odczytu lub zapisu. Obiekt wykonujący operację serializacji może używać obiektu CArchive bez względu na charakter nośnika danych.

Obiekt CArchive używa przeciążonych operatorów wstawiania (<<) i wyodrębniania (>>) do wykonywania operacji zapisu i odczytu. Aby uzyskać więcej informacji, zobacz Przechowywanie i ładowanie obiektów CObject za pośrednictwem archiwum w artykule Serializacja: serializacja obiektu.

Uwaga / Notatka

Nie należy mylić CArchive klasy z klasami iostream ogólnego przeznaczenia, które są przeznaczone tylko do sformatowanego tekstu. Klasa CArchive jest przeznaczony dla obiektów serializowanych w formacie binarnym.

Jeśli chcesz, możesz pominąć serializacji MFC, aby utworzyć własny mechanizm trwałego przechowywania danych. Należy nadpisać funkcje składowe klasy, które inicjują serializację na polecenie użytkownika. Zapoznaj się z omówieniem standardowych poleceń ID_FILE_OPEN, ID_FILE_SAVE i ID_FILE_SAVE_AS w notatce technicznej 22.

W poniższych artykułach omówiono dwa główne zadania wymagane do serializacji:

Artykuł Serializacja: serializacja a dane wejściowe/wyjściowe bazy danych opisuje, kiedy serializacja jest odpowiednią techniką wejściową/wyjściową w aplikacjach bazy danych.

Zobacz także

Pojęcia
Ogólne tematy MFC
Klasa CArchive
Klasa CObject
Klasa CDocument
Klasa CFile