Межпроцессное взаимодействие/трансляция

У меня есть служба Windows (реализованная на C#) и что-то вроде диспетчера управления службами. Я хотел бы отслеживать сообщения от службы к диспетчеру управления службами (который представляет собой приложение оконных форм), но я не уверен, как лучше всего это сделать. Служба должна транслировать сообщения всем клиентам, которые находятся в списке, неблокирующим образом.

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

Любой совет будет принят с благодарностью.


person Jeldrik    schedule 21.12.2009    source источник


Ответы (1)


Если есть несколько прослушивающих клиентов, я думаю, что именованные каналы будут немного сложнее. Я думаю, что общая память была бы проще для этой ситуации. Если клиенты могут находиться на отдельной машине, что-то вроде многоадресной рассылки может быть простым способом передачи информации, если не задействовано много данных. Однако диапазон многоадресной рассылки обычно ограничивается одной подсетью, если только маршрутизаторы специально не настроены для многоадресной рассылки.

person Mark Wilkins    schedule 21.12.2009
comment
Спасибо за ответ. Все клиенты находятся на одной машине, поэтому я хотел бы избежать использования сетевого стека. Общая память звучит как вариант. Но мне кажется, что для этого также можно использовать сообщения Windows (хотя они кажутся немного громоздкими для использования в С#) - person Jeldrik; 21.12.2009
comment
Я согласен с вашей оценкой избегания сети в этом случае. Другой возможностью, которая может быть более гибкой, особенно для будущих обновлений, является использование .Net Remoting (msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx). Это, вероятно, официально правильный способ сделать это. - person Mark Wilkins; 21.12.2009