Как создать объект на удаленной машине в нужном процессе

243
20 марта 2017, 10:23

Имеется изолированная полностью контролируемая локальная сеть с машинами, вопросы безопасности не имеют значения. Еще есть несколько комовских DLL с реализациями и заместителями/заглушками для интерфейсов (proxy/stub). Необходимо создавать экземпляры этих реализаций на удаленных машинах в разных процессах. То есть должна быть возможность поднимать несколько отдельных процессов на одной машине с этими объектами. Причем иногда процессы нужны консольные, а иногда оконные, ну или пусть всегда будут оконные. Экземпляров одной реализации в процессе так же может быть по несколько штук. Предполагается что учет всех объектов ведет одна из машин.

Так вот вопрос, как реализовать это средствами DCOM?

Непонятно вот что. Процесс при старте должен вызывать для каждой фабрики функцию CoRegisterClassObject с ней нужно передать CLSID реализации, указатель на фабрику и флажки с параметрами активации. Это понятно, допустим процесс знает список реализаций и спокойно их регистрирует. Но на клиентской стороне я должен вызвать CoCreateInstance и передать с ней имя машины, CLSID реализации и все. Больше ничего нет чтобы идентифицировать процесс. Как быть, свой механиз воротить?

Смежный вопрос. Если я одновременно зарегистрирую реализации из DLL и из процессов, как DCOM их отличит? Регистрация DLL нужна чтобы их можно было активировать локально из процессов. Как вариант конечно, DLL можно не регистрировать, а подгружать вручную.

READ ALSO
Вычислить сумму

Вычислить сумму

Дана последовательность целых чисел x1,

232
работа с функцией c++

работа с функцией c++

есть функция

188
Как сравнить две строки типа std::string

Как сравнить две строки типа std::string

Имеются две переменные типа stringПодскажите методы их сравнения

278
Работа с множествами в С++

Работа с множествами в С++

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

275