Шаг 159.
Среда программирования Visual C++.
Архитектура СОМ. Диспетчерские интерфейсы. Двойные интерфейсы

    На этом шаге мы рассмотрим двойные интерфейсы.

    Наиболее предпочтительно реализовать диспетчерский интерфейс в виде двойного интерфейса (dual interface). В нем все методы Invoke() доступны напрямую - как записи таблицы vtable. На рисунке 1 показана возможная реализация двойного интерфейса: адреса методов IEncode одновременно включаются как в vtable, так и в справочную таблицу функции Invoke().


Рис.1. Реализация двойного интерфейса

    При наличии двойного интерфейса параметры и методы, предоставляемые компонентом, остаются доступными через диспетчерский интерфейс с помощью языков типа VBScript, а языки типа C++ могут обращаться к ним напрямую через vtable. В Visual Basic доступны как диспетчерский интерфейс, так и vtable. Двойной интерфейс позволяет клиентам, способным обращаться к vtable, быстрее запрашивать методы, при этом он еще и поддерживает клиентов, нуждающихся в диспетчерском интерфейсе.

    Со следующего шага мы начнем знакомиться с потоковыми моделями.




Предыдущий шаг Содержание Следующий шаг