Поиск или создание межпроцессного широковещательного канала связи

Итак, у нас есть эта несколько необычная потребность в нашем продукте. У нас есть множество процессов, запущенных на локальном хосте, и нам необходимо создать средства связи между ними. Сложность в том, что ...

  1. Не существует "сервера" или главного процесса
  2. Сообщения будут транслироваться всем узлам прослушивания
  3. Узлы - это все процессы Windows, но может быть C ++ или C #
  4. Узлы будут работать и в 32-битном, и в 64-битном одновременно
  5. Любой узел может в любой момент подключиться / выйти из диалога
  6. Аномальное завершение процесса не должно отрицательно сказаться на другие узлы
  7. Процесс, отвечающий медленно, также не должен отрицательно влиять на другие узлы.
  8. Узлу не нужно «слушать» широковещательное сообщение

Еще несколько важных деталей ...

'сообщения 'нам нужно отправить, являются тривиальными по своей природе. Достаточно имени типа сообщения и одного строкового аргумента.

Связь не обязательно является безопасной и не требует предоставления каких-либо средств аутентификации или контроля доступа; однако мы хотим сгруппировать сообщения по сеансу входа в Windows. Возможно, здесь интересен тот факт, что процесс без повышенных прав должен иметь возможность взаимодействовать с процессом с повышенными правами и наоборот.

Мой первый вопрос: существует ли библиотека с открытым исходным кодом? Или что-то, что можно использовать для выполнения это без особых усилий. На данный момент мне не удалось ничего найти: (

Если библиотеки для этого не существует, то ... Какие технологии вы бы использовали для решения этой проблемы? Сокеты, именованные каналы, файлы с отображением памяти, Обработчики событий? Похоже, что транспорты на основе соединений (сокеты / каналы) были бы плохой идеей в полностью подключенном графе, поскольку n узлов требует n (n-1) количества подключений. правдоподобное решение прямо сейчас ...

Обновления

  • Должно ли оно быть надежным и гарантированным? Да и нет ... Допустим, если я слушаю, и я отвечаю в разумные сроки, тогда я всегда должен получать сообщение.

  • Каковы типичные размеры сообщений? менее 100 байт, включая идентификатор сообщения и аргумент (ы). Они маленькие.

  • О какой частоте сообщений мы говорим? Низкая пропускная способность приемлема, 10 в секунду будет много, среднее использование будет около 1 в минуту.

  • Какое количество процессов задействовано? Я бы хотел, чтобы он обрабатывал от 0 до 50, в среднем от 5 до 10.

6
задан csharptest.net 15 February 2011 в 18:19
поделиться