![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CORBA сразу и клиент и сервер возможен?
Matushkin © (2002-02-06 09:44:00)Серверу надо посылать команды другим приложениям. Подскажите это в рамках CORBA в принципе возможно ?
Олег Лаукарт (2002-02-08 18:51:00) [1]Лови обе статьи на matushkin@mtu-net.ru
matushkin (2002-02-08 14:05:00) [2]Что-то из моей области интернета этот сайт не виден :(
Олег Лаукарт (2002-02-08 11:06:00) [3]Я еще не успел познакомится с службой событий, но я нашел упомянутые мной выше статьи - очень похоже на поставленную задачу:
1."Обратные вызовы в CORBA" Технология Клиент-Сервер 1999'3.
http://www.optim.ru/cs/1999/3/corba/corba.asp
2."Использование callback-вызовов и сервисов событий в CORBA" Технология Клиент-Сервер 2000'3.
http://www.optim.ru/cs/2000/3/corba/corba_callback.asp
Matushkin (2002-02-08 07:17:00) [4]> nikols ©
насколько я понял из описания при использовании сервиса событий сообщение будет передаваться ВСЕМклиентам, что неоправданно загрузит сеть.
nikols (2002-02-07 17:26:00) [5]а не нужно ли подумать о сервисе событий?
Matushkin (2002-02-07 14:03:00) [6]Задача такая: на сервере рассчитывается модель физ. обьекта, на части клиентов просто отображаются различные параметры его, а вот часть клиентов им управляют. При этом они переключают физ. обьекта из одного режима работы в другой, при этом есть условие - если один из клиентов перевёл физ. обьекта в какой-то режим, то остальные управляющие клиенты должны об этом узнать. Можно конечно по таймеру опрашивать сервер со всех управляющих клиентов, но это доп. нагрузка, поэтому и хотелось бы, чтобы он сам их известил об том в каком он сейчас режиме (тем более, что переключают его относительно редко).
Спасибо за помощь
Олег Лаукарт (2002-02-07 10:48:00) [7]Для того, чтобы один объект посылал другим сообщения, можно воспользоваться CallBack интерфейсами. Смысл такой. Получатели создают объект для обратной связи и регистрируют его на сервере. Сервер хранит все эти интерфейсы и при необходимости посылает команды, вызывая заданный метод у каждого интерфейса.
При этом надо учитывать следующее:
1. Сервер в данном случае выступает клиентом.
2. Клиент создает скелет CallBack-объекта и должен хранить ссылку на него, пока хочет/должен получать команды.
3. Сервер, при передаче команд должен ловить и анализировать exception с целью определения ушедших клиентов и забывать такой CallBack объект.
4. У CallBack объекта метод для приема команды должен быть oneway.
Вот пример интерфейса:
interface ClientCallBack
{oneway void SendCommand (in long CommandCode, in string Message);
};
Вообще-то объясни, что ты понимаешь под командой, должен ли клиент отвечать серверу, как отвечать.
Для двусторонней связи посмотри, где-то есть статьи по организации CallBack связи.
nikols (2002-02-07 09:59:00) [8]Сделал самый простой примерчик. Смотри:
http://www.corbaejb.mastak.ru/samples/SampleSC.zip
nikols (2002-02-07 08:15:00) [9]Расскажи, как ты его сделал?
Matushkin (2002-02-07 07:36:00) [10]Но при попытке так сделать моё приложение начинает (по сети видно) интенсивно обращаться и становиться недоступным, пока не убьёшь его. D6, W2k(SP2).
Олег Лаукарт (2002-02-06 11:22:00) [11]Очень даже возможно. В Corba понятие сервера динамическое. Это не жесткая связка в понимании клиент-серверного подхода. Сервер, это объект (в терминах ООП), но не понятно где размещенный, который можно использовать как и другие (локальные). Иногда его надо создавать (через фабрику), а иногда нет - подключился, использовал, отключился. Нет никаких проблем, чтобы этот объект вел себя точно также с другими локальными либо удаленными объектами. Различие лишь в форме организации такого доступа, и то очень малая.