.NET服务总线推荐?

77

我们需要一种分布式架构的消息传递系统/服务总线,具备发布/订阅的能力。请问有什么框架可以用于 .net 应用程序?


17
这些问题非常有建设性。这个问题是谷歌搜索排名最高的,非常实用。就像我关于UML的问题一样。http://stackoverflow.com/q/6877121/377133 - Sergey Metlov
4
这不构建性?你一定在开玩笑。我认为这个问题非常有建设性。这是关于这种类型问题的最佳资源。 - kheya
2
@kheya,这类问题因为可能引起垃圾邮件和工具过时的速度等多种原因而被认为是不具建设性的。这里有一个关于此的答案在Meta上做了解释,我相信还有更多:http://meta.stackoverflow.com/a/251135/1195056 - krillgar
1
最终,[softwarerecs.se] 已经被创建来处理这些问题。 - ivan_pozdeev
请重新打开这个问题。它在谷歌搜索中排名非常靠前,需要讨论。 - Jonas_Hess
7个回答

28

43
虽然它是开源的,但您可能需要查看其许可证。只有部分使用情况是免费的。在其他情况下,您可能需要购买商业许可证以获得授权。 - Manfred
4
如果您不想陷入法律的灰色地带,最好不要下载 nServiceBus 的源代码,因为源代码(2.0 版本之后)没有获得开源许可证(至少不是常见的那种)。因此,如果您拥有源代码,可能会面临法律问题。如果您只是一个小型网络公司,这可能不是真正的问题。但如果您是一家财力雄厚的财富500强企业,情况就不同了... - Eric J.
1
仅澄清一些评论,NServiceBus使用的是互惠许可证(Reciprocal license)。这基本上意味着,您必须开源与NServiceBus一起使用的任何内容。如果这对您不起作用,那么您必须购买它。 - Vaccano

22

6

RabbitMQ难道不只是一个开源消息队列吗?我不相信它本身实际上是一个服务总线框架。 - gabe
从技术上讲,它是一个消息代理。如果它符合项目的要求,你在乎人们如何对其进行分类吗? - TrueWill
3
明白它更像一个经纪人是有帮助的,谢谢!我不在意术语,而是试图理解这些技术之间的差异(因为这在某种程度上是这个问题/答案的性质)。我记得这篇关于经纪人和总线之间差异的有趣文章:http://www.udidahan.com/2011/03/24/bus-and-broker-pubsub-differences/。 - gabe

3

我目前正在开发一个基于WCF的开源服务总线。你可以在这里找到它:http://rockbus.codeplex.com/。它支持动态(@运行时)订阅,订阅存储库(数据库),可插拔传输,基于XPath的内容路由,WCF协议下的事务性投递,轮询投递,可插拔订阅评估等功能。快来看看吧!


3
我发现ActiveMQApache NMS的集成非常易于理解、设置和透明。例如,ActiveMQ带有一个Web前端,允许您使用Web浏览器查看消息队列,读取、删除甚至创建消息。因此,您可以非常容易地开始开发和测试分布式应用程序的一侧,调试和监视也非常直接简单。

3
自版本4.0起,NServiceBus可以在ActiveMQ(以及其他队列)上运行,为您带来双重优势。 - Udi Dahan

2
目前在.NET堆栈中没有成熟的服务总线实现。微软目前正在开发一个。作为一个选择,您可以使用Java世界中的一个。例如,TIBCO - 他们有相当强大的.NET客户端可用,或者OpenMQ。如果您不需要广泛的功能并准备开发自己的系统,请使用WCF。WCF回调非常适合此操作。请参考:http://msdn.microsoft.com/en-us/library/windowsazure/jj193022(v=azure.10).aspx

16
我认为你误将ESB和Messaging混淆了。Tibco和OpenMQ是消息队列,它们只提供传输机制,没有其他功能。关于.NET服务总线的实现:你说得差不多,尽管NServicebus已经接近成熟产品,并且似乎正在努力完善它。作为一个部分使用WCF作为服务总线的人:不,WCF不适合这个任务。在WCF中进行发布/订阅是非常麻烦的,需要深入了解WCF及其架构,但最终会发现它并不是为此而设计的。 - Noctris
在我看来并不是真的。Neuron ESB 非常稳定和成熟,且建立在微软技术之上(包括 .NET、WCF/MSMQ 等)。 - larsw

2
我发现 Neuron ESB 是一个可靠的实现,虽然我还没有在愤怒中使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接