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

       

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


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

(Продолжительность занятия 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.


      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, не сохраняя документ.

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

        1. Запустите Visual Basic и создайте новый стандартный проект.

        2. Добавьте в форму новый элемент управления OLE.

        3. Из списка Object Туре выберите Microsoft Excel Chart и щелкните ОК. В элементе управления появится простой график. Автоматически будет раз решено редактирование по месту.
        4. Нажмите клавишу ESCAPE, чтобы вернуться в окно панели инструментов Visual Basic.

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

          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.

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

                  Содержание раздела