В свое время разработчики технологии 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). Именно этим КОМПАС-Мастер выгодно отличается от КОМПАС-Макро: вам не придется изучать малознакомый язык программирования, вы можете создавать свои приложения в той среде, к которой привыкли.
Базовые интерфейсы API системы КОМПАС
Как вы уже поняли, взаимодействие внешнего приложения или подключаемого модуля с системой КОМПАС (с функциями моделирования, математическими функциями ядра системы и пр.) осуществляется посредством программных интерфейсов, называемых API. В КОМПАС на данный момент существуют API двух версий: API 5 и API 7. Сразу предостерегаю вас от ошибочного мнения, что API 7 – это усовершенствованный и более новый вариант программных интерфейсов пятой версии. На самом деле обе версии реализуют различные функции системы и взаимно дополняют друг друга. Отсюда, полагаю, очевидно, что обе версии программных интерфейсов в равной мере поддерживаются и развиваются с учетом самих изменений в системе.