Кто-нибудь знает о быстрой шине для локального обмена сообщениями между приложениями на одном компьютере?

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

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

5 ответов

Именованные каналы - это самый быстрый способ взаимодействия локальных процессов.

Ссылка:
NamedPipeServerStream
NamedPipeClientStream
Choosing a transport

Важное чтение:
Не заходи в тупик

Если вы просто хотите послать сигнал от одного процесса другому, что некоторая часть работы выполнена, самым легким решением может быть мьютекс.

Я думаю, что при правильной настройке MSMQ + NServiceBus сможет достичь желаемой пропускной способности на одной машине. Существует атрибут [Express], который приведет к тому, что ваши сообщения не будут записаны на диск. Если производительность адекватна, вам гораздо лучше использовать такую ​​среду высокого уровня, чем собственную.

Mailslots
Memory Mapped files
Named Pipes
LPC

Все на Windows

Это не мое окончательное решение, но одно решение, которое появилось, это 0MQ, который предлагает надежный режим pub/sub и имеет относительно низкие требования к конфигурации и инфраструктуре. Недостатком является то, что он является относительно низким уровнем (API.NET является оберткой вокруг собственного кода C), поэтому мне потребуется реализовать всю сериализацию и так далее.

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

Другие вопросы по тегам