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 magazynu, takiego jak plik 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, co pozwala użytkownikowi na ręczne wykonywanie operacji na plikach.

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

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 magazynu. Serializacja obsługuje wszystkie szczegóły wskaźników obiektów i odwołania cykliczne do obiektów używanych 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 CArchive klasy jako pośrednika między obiektem do serializacji a nośnikiem magazynu. 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ć CArchive obiektu bez względu na charakter nośnika magazynu.

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

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 zastąpić funkcje składowe klasy, które inicjują serializacji przy użyciu polecenia użytkownika. Zapoznaj się z omówieniem w temacie Technical Note 22 of the ID_FILE_OPEN, ID_FILE_SAVE, and ID_FILE_SAVE_AS standard commands (Uwagi techniczne 22 ) ID_FILE_OPEN, ID_FILE_SAVE i ID_FILE_SAVE_AS standardowych poleceń.

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 też

Pojęcia
Tematy ogólne dotyczące MFC
Klasa CArchive
Klasa CObject
Klasa CDocument
Klasa CFile