Как зарегистрировать прокси / заглушку для интерфейса COM, определенного третьей стороной? - PullRequest
1 голос
/ 27 ноября 2009

Есть еще одна компания, которая поставляет продукт, который использует интерфейс IAnotherCompanyInterface. Мы хотим отправить COM-объект, который реализует IAnotherCompanyInterface. Этот интерфейс не совместим с Automation, поэтому следующий простой способ включить маршаллинг - использовать прокси / заглушку. Другая компания не отправляет прокси / заглушку и не хочет.

Компиляция и регистрация прокси / заглушки сама по себе не является проблемой, но рассмотрим следующую ситуацию. Наша компания отправляет COM-объект, реализующий интерфейс IAnotherCompanyInterface и ThirdPartyCompany, которые делают то же самое. Таким образом, оба компонента могут быть развернуты на одном компьютере.

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

Ответы [ 2 ]

0 голосов
/ 30 ноября 2009

Прошло много времени с тех пор, как я работал с этим материалом, так что это "мысли вслух", но, надеюсь, это поможет ...

Я предполагаю, что вы видите библиотеку типов, которая описывает интерфейс, который вы хотите реализовать. Если это так, загрузите его в oleview.exe. Скопируйте IDL, который он вам дает, в новый собственный файл .idl и основывайте свою реализацию на этом файле.

Я знаю, что ваш вопрос на самом деле о DLL прокси / заглушки. Все в порядке. Ваш будет сгенерирован вместе с вашим фактическим COM-сервером, и он будет работать на ваших компьютерах и компьютерах ваших пользователей. Если ваш код установлен на машине, на которой также установлены биты «Другой компании», это не должно иметь значения ...

Прокси / заглушка - это всего лишь фрагмент кода, который сообщает COM, как передавать параметры и возвращать значения между COM-клиентом и COM-сервером. Если ваш построен из IDL, который был сгенерирован из их библиотеки типов, они будут функционально эквивалентны. Ваш COM-сервер может быть успешно вызван через прокси / заглушку и наоборот.

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

0 голосов
/ 28 ноября 2009

Вы можете полностью пропустить реестр в своем клиенте, используя COM без регистрации или контекст активации. Вы можете предоставить «пользовательские» записи comInterfaceExternalProxyStub в файле манифеста, которые ссылаются на реализацию прокси / заглушки.

...