Программирование на языке MFC

Мой второй блог в серии программирования

Сериализация и архивы


Иногда программе может потребоваться сохранить данные, сфор­мированные в каком-то виде в оперативной памяти, на каком-то устройстве, обеспечивающем длительное хранение данных. Таки­ми устройствами могут быть дискета, винчестер, компакт-диск и т.д. При этом программа должен обеспечить сохранение текущего со­стояния совокупности своих объектов таким образом, чтобы затем, при повторном запуске программы, текущее состояние объектов могло бы быть полностью восстановлено. Совокупность действий, обеспечивающих, с одной стороны, сохранение текущих данных в форме, позволяющей последующее восстановление, и, с другой стороны, непосредственно восстановление текущего состояния данных, называется сериализацией.

Для того чтобы реализовать сериализацию, можно пойти при­вычным путем – в программе создать файл, затем при помощи стан­дартных операций записи в файл «сбросить» в него данные, потом при помощи таких же стандартных операций считать данные. Но де­ло в том, что программе придется работать не с объектами, а с не­которыми блоками памяти или, на худой конец, со строками. Все будет работать нормально, но каждый раз придется считать, какую переменную куда записать, помнить о формате записанной инфор­мации… Ужас!

Можно, конечно, пойти другим путем. В каждой программе раз­работать методы, реализующие сериализацию для каждого кон­кретного класса. Можно при этом использовать уже имеющиеся в языках средства для записи данных в файл.

Но я не зря выше употребил слово «стандартные». Дело в том, что MFC позволяет программистам использовать процедуры се-риализации, которые являются стандартными для MFC. Конечно, процедуру сериализации для всех возможных объектов и органи­зованных в памяти структур данных написать невозможно, но впол­не возможно определить порядок применения процедур сериали-зации, описать интерфейсы и т.д.