Руководство разработчика

Краткий обзор терминов COM

Интерфейс
Совокупность объявлений методов и свойств. Интерфейсы не содержат никакого программного кода – это только объявления. В COM интерфейсы описываются на специальном языке Microsoft IDL. Интерфейсы могут составлять иерархию наследования. Как правило, интерфейсы наследуют стандартный интерфейс IDispatch и являются дуальными (dual), т.е. поддерживающими две модели вызова методов. Реализацию интерфейсов предоставляют классы. Один и тот же интерфейс может быть реализован несколькими классами различным образом. Для идентификации интерфейсов в COM используются GUID.
Класс
Классы (coclass) реализуют один или несколько интерфейсов. Один из интерфейсов, реализуемых классом, используется по умолчанию. Класс содержит программный код реализации всех поддерживаемых им интерфейсов. Для того, чтобы получить ссылку на один из интерфейсов и вызвать его методы, необходимо создать объект (или экземпляр) данного класса. Для идентификации классов в COM используются GUID и строковые идентификаторы ProgID.
Объект
Объект (instance) – экземпляр класса, в отношении которого возможно получение ссылок на интерфейсы, вызов методов и обращение к свойствам этих интерфейсов. Для выполнения каких-либо полезных действий необходимо сначала создать объект, задав требуемый класс, получить ссылку на нужный интерфейс и вызвать его методы или обратиться к свойствам. В принципе, возможна ситуация, когда у объекта запрашивается ссылка на интерфейс, который он не поддерживает (т.е. не реализованный в его классе).
Метод
Методы объявляются в интерфейсе путем указания имени, списка параметров и типа возвращаемого значения. Реализация методов одного интерфейса может быть различной в нескольких классах, реализующих этот интерфейс. Вызов методов осуществляется путем получения у объекта некоего класса ссылки на требуемый интерфейс и передачи методу фактических параметров. Параметры метода могут быть входные (in), выходные (out) и входные/выходные (in/out).
Свойство
Свойства используются для предоставления удобного доступа к данным объекта. Свойства представляются в интерфейсе парой функций стандартного вида (get/put, чтение и запись). Для свойств доступных только для чтения (read only) задается только одна get-функция. При этом указывается имя свойства и его тип. Свойства не добавляют никаких новых функциональных возможностей, по сравнению с методами, но представляют ряд операций с объектами в более простом и наглядном виде.
Библиотека типов
Библиотеки типов (typelib) содержат объявления интерфейсов, классов и др. Они могут быть частью файлов исполняемого кода (dll, exe), содержащих программный код реализации классов. Библиотеки типов могут регистрироваться в реестре Windows. Зарегистрированные библиотеки типов могут быть загружены путем указания их GUID. Незарегистрированные библиотеки типов могут загружаться просто путем указания имени файла. Библиотеки могут ссылаться друг на друга. Так, например, объявленный в одной библиотеке интерфейс может реализовываться классом в другой библиотеке.
GUID
Глобальный уникальный идентификатор, повсеместно используемый в COM и не только. Обычно GUID задается и отображается в строковом виде:
{XXXXXXX-XXX-XXXX-XXXX-XXXXXXXXXXXX}, что соответствует 128-битному двоичному значению.