Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разница подъема клиента просто и через DCOM, Запуск лишнего экзмпляра сервера 
:(
    Опции темы
gAlexKo
Дата 7.9.2020, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 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
PM MAIL   Вверх
xvr
Дата 7.9.2020, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7033
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 8
Всего: 223



Посмотрите под какими акаунтами работают ваши 2 экземпляра.
Так же посмотрите как именно они запустились - как exe сервера или сервисы.
Если есть различия по любому из этих пунктов - постарайтесь их привести к общему знаменателю.
(В частности - точно ли клиенты на компе 1 запускают сервер через DCOM, а не локально?)

PM MAIL   Вверх
gAlexKo
Дата 8.9.2020, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 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 идет через сеть?
PM MAIL   Вверх
xvr
Дата 10.9.2020, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7033
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 8
Всего: 223



Цитата(gAlexKo @  8.9.2020,  11:35 Найти цитируемый пост)
Тот сервер который запускается через DCOM клиентом компа2 запускается от имени пользователя компа2 (который заведен в пользователи компа1).

Т.к. запуск идёт под разными учётками, то сервера будут разными (что вы и наблюдаете)

Цитата

Но если запустить комп2 от имени пользователя компа1,

Пользователь должен быть вообще один, для разных компов это возможно если только он доменный (одинаковое имя пользователя на локальных компах недостаточно)

Попробуйте запустить сервер под системным акаунтом (localsystem например)


Цитата(gAlexKo @  8.9.2020,  11:35 Найти цитируемый пост)
В то время как статус второго экземпляра на компе1 (запущенного на компе1) "Connected locally".

Вот вот.


Цитата(gAlexKo @  8.9.2020,  11:35 Найти цитируемый пост)
А как запустить через DCOM сервер на компе1?


Попробуйте в CoCreateInstanceEx явно задать удалённое подключение, а в качестве хоста задать .


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1018 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.