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 CObject
protokoł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