Связывание и внедрение объектов
(Продолжительность занятия 20 минут)
Связывание и внедрение
объектов (Object Linking and Embedding, OLE) — основанный на СОМ механизм, позволяющий
приложениям взаимодействовать между собой. Он повышает эффективность работы
за счет использования в приложении возможностей других программ. OLE применяют
для построения составных документов, которые можно хранить в одном составном
файле. На этом занятии
Вы узнаете, как применять OLE для создания составных документов и управления
приложениями.
Изучив материал этого занятия, Вы сможете:
- создать составной документ;
- использовать OLE-автоматизацию для управления приложением;
- рассказать, что такое структурированное хранилище и как оно работает.
Составные файлы
Технология составных документов OLE основана на СОМ, структурированных хранилищах и унифицированной передаче данных. Объект «составной документ» — это, в сущности, объект СОМ, который можно внедрить в существующий документ или связать с ним. Как всякий объект СОМ, он предоставляет клиентам интерфейс IUnk-nown. Этот интерфейс делает доступными указатели на другие интерфейсы, реализующие конкретные возможности составного документа, а именно:
- IQleObject;
- IQleLink;
- IViewObject2.
При создании составного документа одно приложение является контейнером, а другое — сервером. Серверный документ может быть связан с приложением-контейнером или внедрен в него. При связывании документа он хранится в отдельном от контейнера файле. Внедренные документы, напротив, хранятся в том'же файле, что и контейнер (рис. 5.8).
Применение составных файлов
Популярность технологии составных файлов объясняется эффективным и гибким доступом к данным объекта, который предоставляет система хранилищ OLE. Она позволяет считать с диска в память объект или его часть, а не весь файл, что весьма важно при загрузке документа OLE с большим числом объектов или одним объектом большого объема (например, видеоклипом). Этот способ гораздо эффективнее — так пользователь сразу получает доступ к нужным данным, не ожидая загрузки всех материалов.
Рис. 5.8 Использование составных документов
Разнообразие форматов и источников данных
Составные документы OLE позволяют работать внутри одного приложения со множеством данных в любых форматах из самых разнообразных источников. Например, пользователь может вставить в документ текстового редактора график из одного приложения и звуковой объект — из другого. Активизировав график, Вы запустите создавшую его программу (или часть ее пользовательского интерфейса, содержащую средства редактирования объекта). Активизация звукового объекта позволит воспроизвести его средствами соответствующего приложения. В обоих случаях пользователь может манипулировать данными из внешних источников в контексте своего документа.
> Использование составных документов
В этом упражнении Вы сначала вставите в документ Microsoft Word растровое изображение, а затем отредактируете его средствами Microsoft Paint.
- Запустите Microsoft Word и создайте новый документ.
- В меню Insert щелкните команду Object.
- В диалоговом окне
Create New Object выберите пункт Bitmap Image и щелкните
ОК.
Обратите внимание, что теперь в Microsoft Word доступны меню и панель инструментов Microsoft Paint.
- Нарисуйте изображение средствами Microsoft Paint.
- Нажмите клавишу ESCAPE, чтобы вернуться в окно Word.
- Добавьте в документ какой-нибудь текст.
- Дважды щелкните вставленное изображение, чтобы отредактировать его с помощью Microsoft Paint.
- Закройте Microsoft Word, не сохраняя документ.
Теперь Вы добавите график Microsoft Excel в форму Visual Basic как составной документ OLE. При этом автоматически включится поддержка его редактирования.
> Создание проекта Visual Basic
- Запустите Visual Basic и создайте новый стандартный проект.
- Добавьте в форму новый элемент управления OLE.
- Из списка Object
Туре выберите Microsoft Excel Chart и щелкните ОК.
В элементе управления появится простой график. Автоматически будет раз решено редактирование по месту.
- Нажмите клавишу ESCAPE, чтобы вернуться в окно панели инструментов Visual Basic.
> Проверка средств редактирования
- Запустите приложение.
- Дважды щелкните график
Microsoft Excel.
Запустится процесс редактирования по месту. Обратите внимание на появление в форме меню Excel.
- Если панель инструментов графика не отображается, в меню View, Toolbars выберите команду Chart.
- В панели инструментов Chart щелкните кнопку Chart Type.
- Щелкните 3-D Bar Chart и обратите внимание на изменение встроенного объекта-графика.
- Дважды нажмите клавишу
ESCAPE, чтобы закончить редактирование и вернуться в окно Visual Basic.
График будет обновлен в соответствии с новым типом.
- Завершите приложение и закройте Visual Basic.
Структурированные хранилища OLE
При использовании объектов СОМ данные хранятся в специфическом формате, называемом структурированным хранилищем OLE. Он позволяет объединять данные из разных документов в один составной документ.
Система хранилищ напоминает файловую систему. Доступ к данным объекта осуществляется через ряд интерфейсов, предоставляемых OLE. Последний реализует систему хранилищ в виде составных файлов.
Файлы структурированных хранилищ
Основное назначение СОМ — интеграция приложений. Следствие объединения приложений — необходимость хранить содержащуюся в них информацию в одном и том же файле. Решение этой проблемы — файловая система внутри файла. Теперь не надо обрабатывать поток данных с помощью дескриптора и указателя смещения одного файла: OLE предоставляет модель, позволяющую трактовать файл как структурированный набор объектов двух типов — хранилищ и потоков (рис. 5.9). Они аналогичны каталогам и файлам соответственно. Эта модель называется структурированным хранилищем.
Рис. 5.9 Файлы структурированных хранилищ
Хранилища и потоки
Структурированное хранилище OLE — это иерархическая система хранения данных, которая имитирует файловую систему внутри файла. В ней два уровня хранения:
- объекты-хранилища;
- объекты-потоки.
Эти объекты аналогичны уровню каталогов типовой файловой системы (рис. 5.10). Первый содержит потоки и/или другие хранилища; второй — данные. Каждому объекту соответствует объект-хранилище. Доступ к объектам и данным в системе хранения осуществляется через набор интерфейсов, предоставляемых OLE.
Рис. 5.10 Хранилища и потоки
Эффективность структурированных хранилищ
Структурированные хранилища — простой и эффективный метод размещения объектов и составных файлов. Этот механизм позволяет увеличить производительность и снизить накладные расходы, характерные для хранения отдельных объектов в обычных файлах. Вместо этого СОМ помещает все объекты в единый структурированный файл, состоящий из двух основных элементов: объектов-хранилищ и объектов-потоков. Вместе они действуют как файловая система внутри файла. Подобно файлу, поток содержит данные в виде последовательности байтов.
Вложенные объекты
Составной файл СОМ состоит из объекта «корневое хранилище», содержащего по крайней мере один объект-поток данных хранилища, и одного или нескольких объектов-хранилищ — связанных и внедренных объектов. Объект «корневое хранилище» назван по имени файла в той файловой системе, где он находится. Объекты-хранилища могут включать любое число объектов-потоков и вложенных объектов-хранилищ, реализующих объекты документа. Таким образом, документ содержит сколь угодно много вложенных объектов (рис. 5.11).
Например, если в документ Word вставлен график Excel, корневым объектом будет объект-хранилище документа Word. Он содержит как свои данные; так и OLE-данные для объекта Word. Кроме того, здесь же находится объект-хранилище для графика Excel с данными самого объекта и OLE-данными объекта Excel.
Рис. 5.11 Вложенные объекты
Модификация и добавление объектов
Добавление нового объекта к составному файлу или увеличение имеющегося объекта не вызывает перезаписи файла хранилища. Вместо этого новые данные записываются в первую свободную область хранилища, а объект-хранилище соответствующим образом обновляет свою таблицу указателей (в ней содержится информация о местонахождении объектов-хранилищ и потоков). Этот механизм повышает производительность операции с данными и позволяет конечным пользователям работать с составным хранилищем как с единым файлом, а не как с иерархией отдельных объектов.
Дополнительные преимущества
- Избирательный доступ — позволяет загрузить и сохранить только нужный пользователю объект составного файла, а не файл целиком.
- Совместное использование — несколько пользователей или приложений одновременно могут считывать и записывать информацию в один и тот же составной файл.
- Обработка транзакций — пользователи вправе считывать и записывать информацию в составной СОМ-файл в режиме транзакций, когда все изменения в файле буферизуются и их можно разом сохранить или отменить.
- Нетребовательность к памяти — структурированное хранилище позволяет сохранять файлы при нехватке памяти.
OLE-автоматизация
OLE-автоматизация — это сервис OLE, предназначенный для интеграции средств разработки и приложений: приложения предоставляют свои функции другим приложениям или управляют их возможностями на одном компьютере или в сетевой среде. Применение этой технологии обеспечивает автоматизацию приложений и их объединение с программным кодом. Вот основные элементы OLE-автоматизации.
- Программы или их компоненты, которые могут управляться другими приложениями (серверы OLE-автоматизации). Microsoft Word, Excel, PowerPoint и Outlook — примеры серверов OLE-автоматизации. Они предоставляет другим приложениям доступ к своим функциям через объектные модели.
- Другие приложения или средства разработки — контроллеры OLE-автоматизации, программно управляющие серверами OLE-автоматизации за счет доступа к функциям серверов. Microsoft Visual Basic, Visual C++, Visual FoxPro и Visual Basic for Application (который встроен в продукты Microsoft Office и может быть лицензирован для использования в других продуктах) — все это контроллеры OLE-автоматизации.
Фактически, OLE-автоматизация представляет собой процесс обмена инструкциями между контроллерами и серверами OLE-автоматизации. Пользуясь средствами, которые предоставил сервер, контроллер передает ему инструкции для выполнения.
Резюме
Технология OLE предназначена для создания составных документов и использования функциональных возможностей приложений. Технология составных документов OLE основана на СОМ, структурированных хранилищах и унифицированной передаче данных. Объект «составной документ» — это объект СОМ, который можно встроить в существующий документ или связать с ним. Составные документы позволяют манипулировать данными любых форматов из различных источников внутри одного приложения.
OLE определяет модель структурированного хранилища, которая трактует файл как структурированный набор объектов двух типов: хранилищ и потоков. Первые аналогичны каталогам, а вторые — файлам. Структурированное хранилище увеличивает производительность и уменьшает издержки, связанные с размещением объектов по отдельности в разных файлах.
Благодаря OLE-автоматизации приложения могут предоставлять свои функции другим приложениям или управлять их возможностями на одном компьютере или в сетевой среде.