Компонентная модель объектов (COM – Component Object Model), являющаяся базовым элементом технологии ActiveX фирмы Microsoft, позволяет пользователям создавать «составные» документы, а разработчикам – «составные» приложения. В составных документах могут содержаться материалы, созданные с помощью различных приложений, а в составных приложениях – различные объекты (из стандартных библиотек или пользовательские), помогающие создать такие материалы. Например, приложение, созданное на основе Access, может использовать объекты Excel в качестве объектов, выполняющих финансовые расчеты.
Automation является одним из наиболее важных средств ActiveX. Это средство позволяет применять в приложении подпрограммы, управляющие объектами в другом приложении. Более ранняя технология организации взаимодействия двух приложении называлась DDE (Dynamic Data Exchange). При использовании DDE приложения вступали для обмена информацией в диалог. Но при таком способе организации взаимодействия приложения работали медленно. Automation является значительно более быстрым и легким в использовании средством.
Ключевым понятием, лежащим в основе всех интегрируемых приложений, является служба (сервис). Приложение, поддерживающее Automation (OLE Automation), можно рассматривать как набор служб, которыми это приложение может пользоваться. «Специализация» продуктов семейства Microsoft Office такова:
– Access – службы базы данных (СУБД), просмотр и ввод данных, формы, отчеты;
– Excel – службы расчетов, просмотра, финансового анализа и представления данных;
– Word – службы текстового процессора и настольной издательской системы, создание отчетов;
– PowerPoint – службы представления информации, презентации;
– Office Binder – службы хранения и использования данных, интеграции документов;
– Microsoft Outlook – службы управления информацией, электронная почта, управление заданиями, база контактов, планирование групповой работы;
– Project – управление проектами;
– Microsoft Internet Explorer – службы просмотра Web.
– Ценой удобства доступа к такому широкому набору служб является производительность. Более высокопроизводительные приложения можно построить с использованием объектов, написанных на языках типа C/C++.
Приложение поддерживает Automation одним из двух способов: приложение может быть объектом Automation (сервер Automation – это приложение, предоставляющее свои объекты для получения команд от управляющего приложения) и управляющим приложением (клиент Automation или контроллер Automation – это приложение, которое воздействует на объекты Automation и посылает команды серверу Automation).
Некоторые приложения Microsoft Office могут быть только серверами Automation, другие могут выступать и в роли клиентов. Степень поддержки приложениями MS Office Automation показана в табл. 6.
Технически объект в программировании объединяет в себе данные с функциями, использующими эти данные, т.е. в объекте данные объединяются с механизмами доступа к ним. Microsoft расширило понятие объекта до понятия «программируемого объекта». Поведение таких объектов изменяется с помощью Automation. Это позволяет конструировать приложения, управляющие другими объектами-приложениями.
COM определяет интерфейс, позволяющий объектам, написанным разными разработчиками, на разных языках программирования, работать друг с другом. Общий язык программирования для всех продуктов Microsoft – VBA. Он используется для программного управления объектами Automation.
Спецификация COM определяет, как приложения управляют объектами. Возможны два способа совместного использования объектов: пользователи могут внедрить объекты других приложений в свои файлы (связать их), что позволяет создавать составные документы, которые содержат данные, порожденные разными приложениями; разработчики могут построить приложения, которые делают общедоступными свои объекты, т.е. разработчики могут интегрировать существующие функциональные возможности других продуктов.
OLE (Object Linking and Embedding – связывание и внедрение объектов) как часть спецификации COM, предоставляет пользователям возможность создания составных документов путем сопоставления объекту двух типов данных: собственно данных объекта и данных для его представления. С помощью OLE пользователи могут связывать или внедрять объекты других приложений.
Когда объекты связываются с файлом, они добавляют в него данные для своего представления и указатель на исходный файл объекта. При обновлении исходного файла обновляется и его представление в составном документе. При изменении расположения исходного файла относительно составного документа связи разрушаются.
При внедрении объектов в файл в него вносятся и данные о представлении объекта, и данные, необходимые для его редактирования внутри составного документа. Таким образом, все данные, созданные разными приложениями, содержатся в одном документе (файле). Это приводит к «раздуванию» файла составного документа.
Спецификация COM включает в себя часть, называемую Automation, которая позволяет выполнять разработчикам следующие действия:
– управлять с помощью программного кода объектами, созданными другими приложениями;
– создавать и использовать другие пользовательские объекты, поддерживающие спецификацию COM;
– управлять с помощью программного кода связыванием и внедрением объектов.
Приложения, которые управляют доступными объектами других приложений, называются контроллерами Automation (или клиентами Automation), а приложения, которые предоставляют такие объекты в качестве «строительных блоков», – серверами Automation.
Для создания пользовательских объектов используются языки программирования (например, С/С++), а для использования этих объектов, предоставляемых прикладными программами в распоряжение других программ, можно воспользоваться любым языком программирования, обеспечивающим поддержку контроллеров Automation. При проектировании интегрированного приложения можно выбрать одну из трех моделей:
– Модель центрального приложения – одно из приложений Office управляет остальными. Разработчики пишут код только для управляющего приложения.
– Модель исполняемого файла – все компоненты приложений Office управляются из самостоятельного EXE-файла. Кроме его программирования, разработчики могут писать код и для приложений подключаемых компонентов. «Главное» приложение может быть написано на любом языке программирования (например, Visual Basic).
– Модель распределения ролей – каждое приложение Office и исполняемый EXE-файл разработчиков выполняют свою часть работы, код исполняется внутри «родного» приложения. При необходимости приложение само активизирует нужный компонент.