Архитектура Microsoft Windows для разработчиков

admiral xxx 2


Занятие 3. Связывание и внедрение объектов

(Продолжительность занятия 20 минут)

Связывание и внедрение объектов (Object Linking and Embedding, OLE) — основанный на СОМ механизм, позволяющий приложениям взаимодействовать между собой. Он повышает эффективность работы за счет использования в приложении возможностей других программ. OLE применяют для построения составных документов, которые можно хранить в одном составном файле. На этом занятии Вы узнаете, как применять OLE для создания составных документов и управления приложениями.
Изучив материал этого занятия, Вы сможете:

  • создать составной документ;
  • использовать OLE-автоматизацию для управления приложением;
  • рассказать, что такое структурированное хранилище и как оно работает.

Составные файлы

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

  • IQleObject;
  • IQleLink;
  • IViewObject2.

При создании составного документа одно приложение является контейнером, а другое — сервером. Серверный документ может быть связан с приложением-контейнером или внедрен в него. При связывании документа он хранится в отдельном от контейнера файле. Внедренные документы, напротив, хранятся в том'же файле, что и контейнер (рис. 5.8).

Применение составных файлов

Популярность технологии составных файлов объясняется эффективным и гибким доступом к данным объекта, который предоставляет система хранилищ OLE. Она позволяет считать с диска в память объект или его часть, а не весь файл, что весьма важно при загрузке документа OLE с большим числом объектов или одним объектом большого объема (например, видеоклипом). Этот способ гораздо эффективнее — так пользователь сразу получает доступ к нужным данным, не ожидая загрузки всех материалов.

 

5-12.jpg

Рис. 5.8 Использование составных документов

Разнообразие форматов и источников данных

Составные документы OLE позволяют работать внутри одного приложения со множеством данных в любых форматах из самых разнообразных источников. Например, пользователь может вставить в документ текстового редактора график из одного приложения и звуковой объект — из другого. Активизировав график, Вы запустите создавшую его программу (или часть ее пользовательского интерфейса, содержащую средства редактирования объекта). Активизация звукового объекта позволит воспроизвести его средствами соответствующего приложения. В обоих случаях пользователь может манипулировать данными из внешних источников в контексте своего документа.

> Использование составных документов

В этом упражнении Вы сначала вставите в документ Microsoft Word растровое изображение, а затем отредактируете его средствами Microsoft Paint.

  1. Запустите Microsoft Word и создайте новый документ.
  2. В меню Insert щелкните команду Object.
  3. В диалоговом окне Create New Object выберите пункт Bitmap Image и щелкните ОК.

    Обратите внимание, что теперь в Microsoft Word доступны меню и панель инструментов Microsoft Paint.

  4. Нарисуйте изображение средствами Microsoft Paint.
  5. Нажмите клавишу ESCAPE, чтобы вернуться в окно Word.
  6. Добавьте в документ какой-нибудь текст.
  7. Дважды щелкните вставленное изображение, чтобы отредактировать его с помощью Microsoft Paint.
  8. Закройте Microsoft Word, не сохраняя документ.

Теперь Вы добавите график Microsoft Excel в форму Visual Basic как составной документ OLE. При этом автоматически включится поддержка его редактирования.

> Создание проекта Visual Basic

  1. Запустите Visual Basic и создайте новый стандартный проект.
  2. Добавьте в форму новый элемент управления OLE.
  3. Из списка Object Туре выберите Microsoft Excel Chart и щелкните ОК.

    В элементе управления появится простой график. Автоматически будет раз решено редактирование по месту.

  4. Нажмите клавишу ESCAPE, чтобы вернуться в окно панели инструментов Visual Basic.

> Проверка средств редактирования

  1. Запустите приложение.
  2. Дважды щелкните график Microsoft Excel.

    Запустится процесс редактирования по месту. Обратите внимание на появление в форме меню Excel.

  3. Если панель инструментов графика не отображается, в меню View, Toolbars выберите команду Chart.
  4. В панели инструментов Chart щелкните кнопку Chart Type.
  5. Щелкните 3-D Bar Chart и обратите внимание на изменение встроенного объекта-графика.
  6. Дважды нажмите клавишу ESCAPE, чтобы закончить редактирование и вернуться в окно Visual Basic.

    График будет обновлен в соответствии с новым типом.

  7. Завершите приложение и закройте Visual Basic.

Структурированные хранилища OLE

При использовании объектов СОМ данные хранятся в специфическом формате, называемом структурированным хранилищем OLE. Он позволяет объединять данные из разных документов в один составной документ.

Система хранилищ напоминает файловую систему. Доступ к данным объекта осуществляется через ряд интерфейсов, предоставляемых OLE. Последний реализует систему хранилищ в виде составных файлов.

Файлы структурированных хранилищ

Основное назначение СОМ — интеграция приложений. Следствие объединения приложений — необходимость хранить содержащуюся в них информацию в одном и том же файле. Решение этой проблемы — файловая система внутри файла. Теперь не надо обрабатывать поток данных с помощью дескриптора и указателя смещения одного файла: OLE предоставляет модель, позволяющую трактовать файл как структурированный набор объектов двух типов — хранилищ и потоков (рис. 5.9). Они аналогичны каталогам и файлам соответственно. Эта модель называется структурированным хранилищем.

5-13.jpg

Рис. 5.9 Файлы структурированных хранилищ

Хранилища и потоки

Структурированное хранилище OLE — это иерархическая система хранения данных, которая имитирует файловую систему внутри файла. В ней два уровня хранения:

  • объекты-хранилища;
  • объекты-потоки.

Эти объекты аналогичны уровню каталогов типовой файловой системы (рис. 5.10). Первый содержит потоки и/или другие хранилища; второй — данные. Каждому объекту соответствует объект-хранилище. Доступ к объектам и данным в системе хранения осуществляется через набор интерфейсов, предоставляемых OLE.

5-14.jpg

Рис. 5.10 Хранилища и потоки

Эффективность структурированных хранилищ

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

Вложенные объекты

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

Например, если в документ Word вставлен график Excel, корневым объектом будет объект-хранилище документа Word. Он содержит как свои данные; так и OLE-данные для объекта Word. Кроме того, здесь же находится объект-хранилище для графика Excel с данными самого объекта и OLE-данными объекта Excel.

5-15.jpg

Рис. 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-автоматизации приложения могут предоставлять свои функции другим приложениям или управлять их возможностями на одном компьютере или в сетевой среде.