«Ни один ремесленник, который стремится к вершинам своей профессии, не примет негодных инструментов; и ни один производитель, который ценит качество работы, не будет упрашивать ремесленника принять их»
49. Расширения COM
COM с самого начала проектировалась для того, чтобы обеспечить функциональность взаимодействия приложений и предоставить возможность дальнейшего развития этой функциональности за счет расширений. Основной идеей, заложенной в COM, является использование наборов интерфейсов, предназначенных для достижения специфических целей.
Расширения COM продолжают развиваться. OLE технологии и сервисы были разработаны для предоставления различных сервисов приложениям Windows. Далее, Microsoft объединила технологии OLE и OCX, назвав их компонентами ActiveX. Технология ActiveX делает объекты COM более компактными и эффективными, что крайне необходимо для приложений, функционирующих в больших сетях.
Вскоре, возможно, Microsoft включит некоторые MTS технологии для разработки комплексных Intranet и Internet приложений на основе COM технологии. Список реализованных в настоящее время расширений таков.
Серверыавтоматизации (Automation servers) |
Автоматизация – это способность приложения управлять объектами другого приложения программным образом. Серверы автоматизации – это объекты, которые могут программироваться на этапе выполнения |
Контролерыавтоматизации (Automation controllers) |
Это клиенты серверов автоматизации, предоставляющие среду, в которой разработчик или пользователь может писать сценарии (scripts) управления серверами автоматизации |
Элементы ActiveX (ActiveX controls) |
Это специализированные COM объекты для компонентов Windows. Они более компактны по сравнению с устаревшими серверами OLE документов, что обеспечивает эффективность их применения в таких масштабных сетевых средах, как Internet или сети Intranet больших предприятий. Элементы ActiveX должны находиться в библиотеке |
Библиотекитипов (Type libraries) |
Представляет собой набор структурированных данных, часто сохраняемый как ресурс, содержащий подробную информацию об объекте и его интерфейсах. Клиенты серверов автоматизации и элементов ActiveX получают из этой библиотеки информацию о типах |
Активные документы (Active Documents) |
Это объекты, которые поддерживают связывание и внедрение, перемещение, визуальное редактирование и активизацию на месте. Документы Word и таблицы Excel являются примерами активных документов |
Визуальные межпроцессные объекты (Visual cross-process objects) |
Объекты, которыми можно управлять из различных процессов |
На приведенном ниже рисунке показана взаимосвязь расширений COM.
Серверы и контролеры автоматизации. Термин "автоматизация" означает способность приложения управлять объектами другого приложения программным образом, подобно макросам, способным манипулировать несколькими приложениями одновременно. Клиента объекта автоматизации называют контроллером автоматизации (Automation controller), а объект сервера – объектом автоматизации (Automation object) .
Автоматизация может использоваться для всех трех видов серверов. Для нее характерны два ключевых момента:
Ø объект автоматизации должен иметь возможность определить множество (набор) свойств и команд и описать их возможности посредством описаний типа. Для того чтобы это (описание) реализовать на практике, должен быть способ провести его через описания интерфейсов, методов и их параметров. Обычно эта информация содержится в библиотеках типов (type libraries). В Delphi сервер автоматизации может также генерировать информацию о типах оперативно – "на лету" – когда она будет затребована;
Ø объекты автоматизации должны так реализовать свои методы, чтобы другие приложения могли их использовать. Для этого объекты должны реализовать интерфейс IDispatch. Посредством этого интерфейса объект показывает все свои методы и свойства. Теперь посредством первичного метода этого интерфейса можно вызывать другие методы, которые идентифицируются информацией о типах.
Разработчики, которые хотят создавать и использовать не визуальные OLE объекты, которые могут выполняться в любом адресном пространстве, могут использовать объекты автоматизации. Одной из причин для такого решения является то, что интерфейс IDispatch обеспечивает маршалинг. Однако, автоматизация накладывает некоторые ограничения на доступные для использования типы.
«48. Пример реализации и использования COM класса в С++»
50. Последовательность создания простого COM объекта в Delphi