Re[2]: Компонент ATL при создании COM server
От: joyless  
Дата: 19.06.08 09:59
Оценка:
A>1. Непонятна суть проблемы. У вас в библиотеке 4 независимых компонента с различными CLSID и интерфейсами. Почему необходимо создавать сразу все 4 объекта? Наверное надо что-то пересмотреть в дизайне.
A>2. CoCreateInstanceEx() не предназначен для одновременного создания нескольких различных объектов:
A>

A>CoCreateInstanceEx creates a single uninitialized object associated with the given CLSID on a specified remote machine.

A>В массиве структур MULTI_QI возвращаются различные интерфейсы одного и того объекта, полученные через QueryInterface. И сделано это для уменьшения количества вызовов при создании объекта на удаленной машине.

Здравствуйте, Александр!
Спасибо что откликнулись на мою проблему.
Вы правы, дизайн связки клиент сервер далеко не лучший, но такой достался по наследству.
Серверная часть написана на Visual C++ 7.1 была мягко горовя "кривая",поэтому ее пришлось переделывать полностью.
Клиент был написан грамотно на CBuilder 6, но уже под сервер и менять его дизайн глобально (вызовы интерфейсов и методов) не хотелось бы, так как пришлось бы переделывать всю логику обращений к серверу. Проблема с вызовом клиентом CoCreateInstanceEx в была решена путем создания над 4-мя независимыми компонентами (классами) с интерфейсами, объекта класса на сервере, из которого 4-е этих компонента наследовались. Таким образом происходил вызов всего один раз одного родительского компонента на клиенте.

Еще клиенту требуется менять источник-сервер(IP), а CoCreateInstanceEx() делает это просто без конфигурирования DCOM.

Может все-таки есть несложный способ созать копонент-класс-родитель для 4-х этих компонентов на ATL,

чтобы использовать вызов CoCreateInstanceEx() один раз?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.