Требуется ли для «чистого» интерфейса IDispatch прокси / заглушка DLL? - PullRequest
0 голосов
/ 02 августа 2009

.. для сервера вне процесса, или я могу вызвать диспетчерский интерфейс без регистрации прокси / заглушки?

Интерфейс, о котором идет речь, очень высокого уровня, поэтому производительность не является проблемой, и я мог бы сделать все это без регистрации, что является большим плюсом

Ответы [ 2 ]

1 голос
/ 02 августа 2009

Я почти уверен, что вам не нужно предоставлять собственный прокси / заглушку dll, если вы ограничиваете свой интерфейс (ы) типами, совместимыми с автоматизацией. В этом случае система может использовать маршалер автоматизации и не нуждается в дополнительной помощи. Я считаю, что типы, совместимые с автоматизацией, - это типы, которые могут вписываться в VARIANT, например простые типы POD, BSTR s и т. п.

Я нашел эту статью базы знаний , в которой обсуждается маршалер автоматизации, хотя она не предназначена специально для вашего вопроса. Это действительно список совместимых типов, по крайней мере. В нем также упоминается, что вам необходимо конкретно указать маршалера автоматизации при регистрации для вашего компонента, но, по моему опыту, это не обязательно - ваш пробег может отличаться.

Наконец, вам может понадобиться реализовать IProvideClassInfo; Я обычно использую реализацию, предоставленную ATL.

0 голосов
/ 02 августа 2009

Вам нужен только dll-прокси / заглушка, если ваш интерфейс нужно маршалировать. Это означает, что если ваш COM-сервер находится в процессе, и интерфейс не передается между квартирами, и вы не собираетесь вызывать его из .Net или любой другой ситуации, которая потребовала бы его маршалинга, то вам не нужен прокси / заглушка dll.

...