| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Разница подъема клиента просто и через DCOM |
| Автор: gAlexKo 7.9.2020, 13:49 |
| Сорри - тема должна называться "Разница подъема сервера просто и через DCOM". Просьба исправить название, если можно. Разработан OPC сервер получающий и раздающий некие данные. Есть два компа в сети LAN. 1-й комп - на нем программа BASE, которая реально принимает данные. OPC сервер берет данные этой программы и выдает их OPC клиентам по запросу. 2-й комп - нем запускается OPC клиент который вызывает (через DCOM) подъем сервера на компе1 и отображает данные программы BASE. Если запустить два (и более) клиента на компе1 (там где сервер), то при запуске 1-го клиента сервер поднимается и далее один экземпляр сервера обслуживает всех клиентов. Если запустить первый клиент на компе1, а другой клиент на компе2 (через DCOM запускается сервер на компе1), то на компе1 поднимаются два экземпляра сервера (что вызывает некоторые проблемы с инициализацией этих серверов). Вопрос - этот двойной запуск неизбежен или можно как-то заставить DCOM клиента работать с тем первым экземпляром который уже поднят на компе1? |
| Автор: xvr 7.9.2020, 18:29 |
| Посмотрите под какими акаунтами работают ваши 2 экземпляра. Так же посмотрите как именно они запустились - как exe сервера или сервисы. Если есть различия по любому из этих пунктов - постарайтесь их привести к общему знаменателю. (В частности - точно ли клиенты на компе 1 запускают сервер через DCOM, а не локально?) |
| Автор: gAlexKo 8.9.2020, 11:35 |
| xvr> Посмотрите под какими акаунтами работают xvr> ваши 2 экземпляра. Тот сервер который запущен клиентом(ами) компа1 запускается текущим пользователем компа1. Тот сервер который запускается через DCOM клиентом компа2 запускается от имени пользователя компа2 (который заведен в пользователи компа1). Но если запустить комп2 от имени пользователя компа1, то все равно запуск сервера через DCOM вызывает на компе1 подъем второго экземпляра. xvr> Так же посмотрите как именно они xvr> запустились - как exe сервера или сервисы. Как сервера (т.е. /regserver) , я не делаю их как сервисы. xvr> Если есть различия по любому из этих xvr> пунктов - постарайтесь их привести к общему xvr> знаменателю. (В частности - точно ли клиенты xvr> на компе 1 запускают сервер через DCOM, а не xvr> локально?) Вообще мои клиенты обоих компов при вызове сервера используют IP адрес компа1. Если использовать в качестве клиента Matricon Explorer, то он показывает статус сервера в на компе2 как "Connected remotely on \\комп1". В то время как статус второго экземпляра на компе1 (запущенного на компе1) "Connected locally". А как запустить через DCOM сервер на компе1? Ведь по идее COM/DCOM это одна система, просто вызов DCOM идет через сеть? |