没有网络依赖的进程间pubsub

假设我的计算机上没有安装网卡,我希望function类似于以下内容:

进程1将消息发布到某个URI,例如“Uri1”

var publisher = new Publisher("Uri1"); publisher.publish(new Message("Somedata"); 

进程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")) 

进程3将侦听来自两个URI的消息

 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,但我似乎无法从文档中弄清楚如何从任何一个中提取基本的pubsubfunction,以便我可以将它封装在一个界面类似于上面

使用WCF(通过MSMQ)再次看起来这是一个不错的选择,但是因为我远离WCF专家,所以我想确保在我开始钻研它之前要做的就是这样。

到目前为止,我们的方法依赖于PGM多播,这种方法运行良好,但是没有网卡工作的新要求迫使我们使用另一种机制进行离线工作,至少据我所知

谢谢!

最后,我们选择了一个共享内存现成的解决方案: http : //pubsub.codeplex.com/初始测试意味着它适用于我们的案例

那么,根据http://answers.yahoo.com/question/index?qid=20080616091430AAAxTJB,您可以使用没有安装NIC的环回地址。 也许您可以使用该function继续使用现有代码?

注意:我没有测试过这个,这只是一个想法。