Предположим, что у меня не установлена сетевая карта на моем компьютере, и я хотел бы иметь функциональность, подобную следующей:Interprocess PubSub без сетевой зависимости
Процесса 1 публиковать сообщения в какой-то URI, скажем «Uri1»
var publisher = new Publisher("Uri1");
publisher.publish(new Message("Somedata");
Process 2 оба прослушивать сообщения на "Uri1" и публиковать сообщения в "Uri2"
var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var publisher = new Publisher("Uri2")
publisher.Publish(new Message("SomeMoreData"))
Process 3 будет прослушивать сообщения от обоих URIs
var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var anotherSubscriber = new Subscriber("Uri2")
anotherSubscriber.MessageReceived += data => Console.Writeline(data.ToString());
Все процессы выполняются на одном компьютере. После некоторых исследований я считаю, что MSMQ - это путь (используя имена в очереди как URI), но вопрос реализации остается. Я наткнулся на несколько возможностей:
Использование MSMQ непосредственно
У меня проблема такого подхода заключается в том, что я должен был бы управлять Очереди мой сам, например, создание, население, продувка ... и от того, что я прочитал, я может столкнуться со множеством ловушек и ограничений MSMQ, видя, как я не испытывал с ним
Использование NServiceBus, MassTransit или RhinoServiceBus (все используют MSMQ) Они все кажется, компетентным, особенно NServiceBus, но я не могу показаться, чтобы выяснить из документации, как извлечь основную функциональность PubSub от любого из них, чтобы я мог инкапсулировать его в интерфейс, похожий на вышеприведенном
Использование WCF(over MSMQ) Опять это выглядит как хороший вариант, но, видя, что я далек от эксперта WCF, я хотел бы убедиться, что это путь, прежде чем я начну вникать в него.
Наш подход до сих пор опирался на многоадресную рассылку PGM, которая работала достаточно хорошо, но новая требование работать без сетевой карты заставляет нас использовать другой механизм для работы в автономном режиме, по крайней мере, насколько я знаю
Спасибо!
Спасибо, я дам ему выстрелили завтра, хотя я считаю, что я бы не стал быть в состоянии связать сокет PGM с 127.0.0.1. Я понимаю, что сетевая карта или маршрутизатор несут ответственность за многоадресную передачу, и в отсутствие обоих я не вижу, как будет работать существующий код –
OK, поэтому Я не могу связать сокет PGM с 127.0.0.1. UDP тоже не работает, поскольку я не могу многоадресной или braodbast до 127.0.0.1 ... любых идей? –
Вздох, извините. Думал, что это стоит того. – TJMonk15