1

我需要向多个客户端发送事件。目前我正在使用在 WCF 中使用命名管道实现的基于 Pub-Sub\Observer 模式的解决方案。

如果我想将事件发送到 Web 服务器或 Linux 机器,我的解决方案将不起作用。对于更通用的解决方案,我有哪些选择?

4

2 回答 2

2

我喜欢http://redis.io/来满足我的 pubsub 需求,它是多平台的,很多语言都支持它,很容易绑定,而且速度很快。Redis 也是一个键/值存储引擎,并具有其他一些方便的数据存储功能,因此您可能会发现它的其他用途,用于在 Windows 和 linux 进程之间交换更永久的数据。

如果您正在寻找更高的性能,还有http://www.zeromq.org/它将为您提供一个非常灵活和强大的消息传递结构层来使用,但对于大多数事情来说,它可能是矫枉过正的。

于 2012-10-19T22:05:34.203 回答
2

我猜你需要一个消息服务器或企业服务总线,假设你愿意离开 WCF 和名称管道。

消息服务器通常与平台无关,并且有几种开放和免费的替代方案可用,例如RabbitMQApache ActiveMQZeroMQ(在另一个答案中推荐了 hexist )。这些服务器(ZeroMQ 的定义问题)提供了几种使用消息的不同集成方式,包括发布/订阅。

企业服务总线通常更复杂,但也更灵活。它们通常支持消息转换、复杂路由甚至编排。这里还有一些不同的开放和免费替代方案,例如MuleApache SynapseMass Transit

我没有使用上述所有替代方案,但我认为 RabbitMQ 可以满足您的需求,如果您只是在寻找消息传递,并且如果您还需要一些漂亮的服务总线功能,请添加 MassTransit(用 .NET 编写)。

于 2012-10-20T18:16:30.677 回答