Визуальное программирование и MFC



         

Перманентность


Объекты состоят из методов и данных, и многим объектам необходимо сохранять свои данные в течение периодов неактивности. На профессиональном жаргоне, объекту необходимо сделать свои данные перманентными (persistent), что обычно означает запись их на диск. СОМ-объекты достигают этого разными путями. Один из наиболее широко применяемых — структурированное хранилище (Structured Storage).

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

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

То, что нам нужно, — это способ совместного использования одного файла несколькими СОМ-объектами. Такую возможность и предоставляет структурированное хранилище. Создавая, по сути дела, файловую систему внутри каждого файла, структурированное хранилище предоставляет каждому компоненту, составляющему некоторое приложение, собственный отдельный кусок пространства хранилища, собственные “файлы”. С точки зрения пользователя, файл только один. Однако с точки зрения приложения, каждый компонент имеет собственную область для хранения данных, и все такие области находятся внутри одного дискового файла.




Содержание  Назад  Вперед