logo
Конспект по ООПиП ч

47. Основные технологии com. Автоматизация. Перманентность. Моникеры.

Автоматизация

Электронные таблицы, текстовые процессоры и другие программы предоставляют все виды полезных возможностей. Чтобы реализовать эти возможности, приложения должны предоставлять свои сервисы не только человеку, но и программам — они должны быть программируемыми.

Обеспечение программируемости и является целью автоматизации (Automation, первоначально называвшейся OLE-автоматизацией).

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

(dispinterface). Они очень похожи на интерфейсы (у них есть методы, клиенты осуществляют к ним доступ через указатель интерфейса и т. д.).

Программируемый доступ к внутренним сервисам посредством автоматизации поддерживается и рядом других приложений. Именно эта возможность легкого доступа к мощным средствам существующих приложений делает автоматизацию

одной из наиболее широко используемых технологий на основе СОМ.

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

Объекты состоят из методов и данных, и многим объектам необходимо сохранять свои данные в течение периодов неактивности. Объекту нужно сделать свои данные перманентными (persistent), что обычно означает запись их на диск.

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

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

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

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

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

компонент имеет собственную область для хранения данных, и все такие области находятся внутри одного дискового файла.

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

Эти объекты известны как хранилища (storage) и потоки (streams) и аналогичны соответственно каталогам и файлам обычной файловой системы. Файл структурированного хранилища может содержать данные многих СОМ-объектов,

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

совместное использование диска несколькими приложениями, структурированное хранилище позволяет разным приложениям сообща использовать один файл.

Моникеры

Моникер (moniker, имя, кличка) сам по себе является СОМ-объектом, но весьма специфического назначения: любой моникер знает, как создать и инициализировать экземпляр другого объекта. Например, имея моникер для банковского счета, можно попросить его создать счет, инициализировать его и соединить с ним. Все детали, необходимые для выполнения этих действий,

скрыты от клиента. Если он хочет работать посредством моникеров с двумя банковскими счетами, то ему потребуется два отдельных моникера, по одному для каждого объекта — счета__________. Вообще моникеры в среде СОМ не необходимы; они просто облегчают жизнь клиентов.