Технология COM, автоматизация и интерфейсы IDispatch
Технология COM, автоматизация и интерфейсы IDispatch
Поскольку программирование не является темой данной книги, мы не будем углубляться в суть понятий технологии COM и автоматизации. Я опишу эти вопросы вкратце, чтобы вы имели некоторое представление.
С начала 1990 годов корпорация Microsoft разрабатывает технологию, позволяющую создавать гибкие модульные программы таким образом, чтобы отдельные модули можно было писать на разных языках программирования, но чтобы при этом обеспечивалась их полная взаимозаменяемость при использовании в различных программных пакетах. На сегодня эта технология полностью сформирована и называется COM (Component Object Model, модель компонентных объектов).
Технология COM описывает методологию реализации компонентов программного обеспечения: объектов, которые могут повторно использоваться, могут быть неоднократно подключены к разным приложениям. Повторное использование компонентов стало логическим следствием эволюции объектно-ориентированного программирования и получило название компонентно-ориентированного подхода. Концепция компонентно-ориентированного программирования предусматривает полное отделение внутренних функций компонента от функций доступа к нему извне. Теперь, обращаясь к компоненту, необязательно знать его внутреннее устройство, для этого достаточно лишь иметь информацию о том, как вызывать его функции. Другими словами, необходимо знать, как взаимодействовать с компонентом и какой у него интерфейс. Такая функциональность в COM достигается за счет поддержки одного или нескольких интерфейсов, которые используются другими программами для доступа к внутренним членам и методам компонента.
Таким образом, интерфейс – это то, что размещено между двумя объектами и обеспечивает связь между ними. Интерфейс-ориентированное программирование представляет собой технологию разработки программного обеспечения, жестко нацеленную на использование интерфейсов. Интерфейс является своего рода связующим звеном, предоставленным управляющей программе для доступа к COM-объекту.
Объект COM – конкретный экземпляр COM-класса, завершенный объект с собственными членами данных и методами, который может легко встраиваться в программы или распространяться как отдельный программный продукт. COM-объект представляет собой или DLL-библиотеку или ЕХЕ-программу для Wіndows, которые можно создавать в любой среде программирования, способной поддерживать нужный формат представления. COM-объект может иметь много функций, доступ к которым происходит через его интерфейсы. Любой COM-объект должен иметь по крайней мере одни интерфейс ІUnknown, хотя на самом деле имеет их значительно больше.
В свое время разработчики технологии COM пришли к заключению, что должен существовать некоторый механизм запроса интерфейса для определения его возможностей. Этот запрос также должен существовать для того, чтобы обеспечить обновление клиентскими программами значения счетчика ссылок на данный интерфейс. Данный счетчик определяет, как долго интерфейс будет оставаться доступным, прежде чем он будет удален из памяти. Именно для этой цели существует специальный интерфейс, который называется ІUnknown. Он имеет настолько важное значение, что основной принцип спецификации СОМ требует, чтобы все СОМ-объекты кроме своих специализированных интерфейсов поддерживали интерфейс ІUnknown. Причем каждый определенный для объекта интерфейс должен происходить от ІUnknown или от интерфейса, который в свою очередь сам происходит от ІUnknown. Данный принцип называется наследованием интерфейсов. В интерфейсе ІUnknown реализовано лишь три метода: Queryіnterface(), AddRef() и Release(). Метод Queryіnterface() определяет, является ли полученный интерфейс нужным. Методы AddRef() и Release() используются для подсчета ссылок на данный интерфейс при его применении многими программами. Перед началом использования COM-объекта клиент вызывает метод СОМ, тем самым увеличивая количество ссылок на интерфейс на единицу. После окончания работы с интерфейсом клиент должен вызвать функцию Release(), чтобы уменьшить количество ссылок на единицу. Когда счетчик ссылок для всех интерфейсов станет равным нулю, значит, объект больше никем не используется и его можно выгружать из памяти.
На сегодняшний день технология СОМ используется практически во всех серьезных программах. Приведу один пример. Предположим, что пользователю в каком-нибудь отчете нужно поместить электронную таблицу с расчетами, которые ссылаются на определенные параметры в тексте. Чтобы выполнить любые вычисления без использования технологии СОМ, пришлось бы постоянно переключаться между двумя программами (Word и Excel), а информацию копировать (вырезать и вставлять). При помощи технологии COM можно применять функции электронной таблицы прямо в текстовом редакторе и автоматически форматировать полученный результат. Возможность реализовать операции такого рода называется автоматизацией.
Цель автоматизации состоит в том, чтобы дать возможность программе предоставлять в использование сервисы, которые в ней присутствуют. Основной особенностью автоматизации является возможность комбинировать функции различных специализированных приложений в одном модуле. СОМ дает возможность программам передавать свою информацию в другие приложения и модули. Если бы каждая программа или приложение-сценарий могли бы поддерживать указатели и процедуру обхода указателей, то проблема была бы решена. Однако в некоторых языках программирования есть определенная трудность с процедурой обхода таблицы указателей. Некоторые из них, например Vіsual Basіc, не поддерживают указатели напрямую. Для решения этой проблемы был разработан специальный интерфейс, который разрешает любым языкам программирования, в том числе таким, как Vіsual Basіc, обращаться к методам COM-компонентов. Этот интерфейс получил название ІDіspatch.
Итак, любая программа, которая предоставляет свои возможности другим приложениям (поддерживает автоматизацию), может делать это через интерфейс ІDіspatch. Интерфейс ІDіspatch происходит от базового интерфейса модели СОМ ІUnknown, тем не менее, в отличие от других COM-интерфейсов, ІDіspatch содержит метод Іnvoke(). Его можно использовать для действительного выполнения методов, которые поддерживает COM-объект. Клиент может выполнить любой метод COM-объекта, вызвав метод Іnvoke() интерфейса ІDіspatch. Этот механизм работает при помощи диспинтерфейса (интерфейса диспетчеризации). Диспинтерфейс определяет методы, которые будут доступны благодаря использованию метода Іnvoke() интерфейса ІDіspatch.
Интерфейсы IDispatch можно применять в любой из наиболее распространенных сегодня сред программирования (Visual C++ Studio, Borland Delphi, Borland C++Builder, Visual Basic). Именно этим КОМПАС-Мастер выгодно отличается от КОМПАС-Макро: вам не придется изучать малознакомый язык программирования, вы можете создавать свои приложения в той среде, к которой привыкли.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Автоматизация
Автоматизация Приемочные тесты всегда должны быть автоматизированными. В других моментах жизненного цикла программных продуктов находится место для ручного тестирования, но такие тесты никогда не должны выполняться вручную. Причина проста: затраты.Взгляните на
11.8.1 Администрирование и автоматизация конфигурирования
11.8.1 Администрирование и автоматизация конфигурирования DHCP позволяет существенно снизить объем администрирования для конфигурирования системы. При необходимости можно просто указать блок IP-адресов, из которого сервер DHCP будет присваивать адреса клиентам в локальной
Автоматизация закупки ссылок
Автоматизация закупки ссылок Закупка ссылок является вторым про трудоемкости процессом в SEO, уступая лишь составлению семантического ядра. Это означает, что для эффективной работы над порталом, для которого закупается огромное количество ссылок, процесс необходимо
Глава 12 Макросы и автоматизация
Глава 12 Макросы и автоматизация В процессе работы над изображениями вы часто выполняете одни и те же команды и даже последовательности команд. Чтобы не выполнять последовательность этих операций каждый раз, вы можете записать ее в виде макроса. Затем, запустив этот
Автоматизация импорта и экспорта
Автоматизация импорта и экспорта Назначение спецификации – сохранение параметров импорта или экспорта данных, необходимых программе Access для повторения той или иной операции без участия мастера. Причем в спецификации можно изменить имя исходного или конечного файла
Глава 22 Автоматизация действий
Глава 22 Автоматизация действий Adobe Photoshop содержит возможности автоматизации действий, которые можно и нужно использовать в тех случаях, когда вы сталкиваетесь с повторением одинаковых (или почти одинаковых) операций или когда требуется обработать большое количество
22.2. Автоматизация задач с помощью bash
22.2. Автоматизация задач с помощью bash Представим, что нам нужно выполнить резервное копирование всех важных файлов, для чего создать архивы каталогов /etc, /home и /usr. Понятно, что понадобятся три команды вида: tar — cvjf имя_архива. tar.bz2 каталог Затем требуется записать все эти три
Совет 18 Автоматизация задач
Совет 18 Автоматизация задач Моя карьера постоянно сопровождалась конфликтами между желанием руководства нанять для работы над проектами бюджетную (зачастую заграничную) консалтинговую компанию и моей уверенностью, что самый дешевый разработчик далеко не всегда
Автоматизация задач
Автоматизация задач Большое количество различных операций, выполняемых на компьютере, можно автоматизировать. Обычной функцией программ стало завершение текущей операции с последующим выключением компьютера. Сегодня существует класс подобных утилит и с расширенными
25.3. Автоматизация меню
25.3. Автоматизация меню Несмотря на то что конструкция "документ здесь" успешно применяется для создания экранов меню, ее можно также использовать при автоматизации навигации по пунктам меню. В этом случае пользователю не придется вручную выбирать определенные
Автоматизация поиска мелодий
Автоматизация поиска мелодий С помощью программы «Поиск Полифонических Мелодий Mtone.Ru» вы быстро и легко сможете найти нужную мелодию, а также просмотреть последние их поступления на сайт. Вот как она работает.1. Для начала скачайте и установите программу (ее можно найти
13 Автоматизация
13 Автоматизация Автоматизация наших задач — отдельное удовольствие. В какой еще профессии можно запрограммировать машины, чтобы они делали за нас нашу работу? Ах, если бы это было так просто! Автоматизация задачи требует времени, но выигрыш может быть огромным.Я не