代码之家  ›  专栏  ›  技术社区  ›  Ohad Schneider

无网络依赖的进程间pubsub

  •  1
  • Ohad Schneider  · 技术社区  · 16 年前

    假设我的计算机上没有安装网卡,我希望具有与以下类似的功能:

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

    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的许多陷阱和限制,因为我没有经验

    使用 NServiceBus , MassTransit 或 RhinoServiceBus 它们似乎都很有能力,尤其是NServiceBus,但我似乎无法从文档中找出如何从它们中提取基本的pubsub功能,以便将其封装在与上述类似的接口中

    使用 WCF(over MSMQ) 同样,这看起来是一个很好的选择,但鉴于我远远不是一个WCF专家,我想确保这是一个方法,然后我开始研究它

    到目前为止,我们的方法一直依赖于PGM多播,这种多播运行得很好,但在没有网卡的情况下工作的新要求迫使我们使用另一种机制进行脱机工作,至少据我所知

    谢谢

    2 回复  |  直到 16 年前
        1
  •  3
  •   Ohad Schneider    16 年前

    最后,我们选择了一个共享内存现成的解决方案: http://pubsub.codeplex.com/ 初步测试表明,它对我们的情况很有效

        2
  •  0
  •   FallenAvatar    16 年前

    http://answers.yahoo.com/question/index?qid=20080616091430AAAxTJB

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

    推荐文章