|
|
|
gAlexKo |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 69 Регистрация: 23.3.2011 Репутация: нет Всего: нет |
Сорри - тема должна называться "Разница подъема сервера просто и через DCOM". Просьба исправить название, если можно.
Разработан OPC сервер получающий и раздающий некие данные. Есть два компа в сети LAN. 1-й комп - на нем программа BASE, которая реально принимает данные. OPC сервер берет данные этой программы и выдает их OPC клиентам по запросу. 2-й комп - нем запускается OPC клиент который вызывает (через DCOM) подъем сервера на компе1 и отображает данные программы BASE. Если запустить два (и более) клиента на компе1 (там где сервер), то при запуске 1-го клиента сервер поднимается и далее один экземпляр сервера обслуживает всех клиентов. Если запустить первый клиент на компе1, а другой клиент на компе2 (через DCOM запускается сервер на компе1), то на компе1 поднимаются два экземпляра сервера (что вызывает некоторые проблемы с инициализацией этих серверов). Вопрос - этот двойной запуск неизбежен или можно как-то заставить DCOM клиента работать с тем первым экземпляром который уже поднят на компе1? Это сообщение отредактировал(а) gAlexKo - 7.9.2020, 13:53 |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Посмотрите под какими акаунтами работают ваши 2 экземпляра.
Так же посмотрите как именно они запустились - как exe сервера или сервисы. Если есть различия по любому из этих пунктов - постарайтесь их привести к общему знаменателю. (В частности - точно ли клиенты на компе 1 запускают сервер через DCOM, а не локально?) |
|||
|
||||
gAlexKo |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 69 Регистрация: 23.3.2011 Репутация: нет Всего: нет |
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 идет через сеть? |
|||
|
||||
xvr |
|
||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Т.к. запуск идёт под разными учётками, то сервера будут разными (что вы и наблюдаете)
Пользователь должен быть вообще один, для разных компов это возможно если только он доменный (одинаковое имя пользователя на локальных компах недостаточно) Попробуйте запустить сервер под системным акаунтом (localsystem например)
Вот вот. Попробуйте в CoCreateInstanceEx явно задать удалённое подключение, а в качестве хоста задать . |
||||||
|
|||||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |