Кто-нибудь знает о быстрой шине для локального обмена сообщениями между приложениями на одной машине? - PullRequest
4 голосов
/ 29 ноября 2011

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

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

Ответы [ 5 ]

4 голосов
/ 29 ноября 2011

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

Справка:
NamedPipeServerStream
NamedPipeClientStream
Choosing a transport

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

1 голос
/ 29 ноября 2011

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

1 голос
/ 29 ноября 2011

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

0 голосов
/ 29 ноября 2011

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

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

0 голосов
/ 29 ноября 2011
Mailslots
Memory Mapped files
Named Pipes
LPC

Все в Windows

...