我与有关NServiceBus和MassTransit一个利弊清单挣扎。
现在我知道已经有一个线程在这里,但它并没有真正回答我的问题。
以下是我到目前为止阅读:
- NServiceBus,是它的许可,并没有免费的午餐。
- MassTransit,是的,它是开源的,但文档似乎有所欠缺。
NServiceBus是年龄大了,有更多的参考。 这是很难找到有关MassTransit的东西,但我很豁达。 不过,我必须提供的固溶体,所以我不得不问。
所以,请人用这两个框架方面的经验。 我为什么要选择NServiceBus? 或者我为什么要选择MassTransit?
它是性能,安全性,规模还是?
如果让我来总结一下,这里就是我想要说的话:
如果你需要商业支持,去NServiceBus。 如果你习惯使用论坛作为支持手段,MassTransit是一个很好的选择。 开发商一直非常敏感的问题,我们至今。 如果您选择MassTransit,现在你将MSMQ和RabbitMQ的选择。 如果你需要DTC去MSMQ。 如果你想要更多的功能和更好的管理,一起去的RabbitMQ。
在我们的项目中,我们从NServiceBus切换到MassTransit的原因有两个:
- MassTransit是免费的
- 我们爱的RabbitMQ
我用两个框架。 我用MassTransit比NServiceBus更长。 以下是亮点,因为我看到他们。
成本:
- MassTransit就是Apache 2.0许可和免费用于商业生产使用,而NServiceBus是没有的。
支持:
- 由于乌迪提到的,是商业NServiceBus支持的选项,我还没有看到,对于MassTransit。
运输:
- MassTransit支持MSMQ和RabbitMQ的
-
NServiceBus仅支持MSMQ的RabbitMQ在NServiceBus支持4+
RabbitMQ的VS MSMQ:
- MSMQ支持DTC(分布式事务协调器)对潜在的多台机器,涉及多个进程交易(如SQL服务器,Windows服务)
- RabbitMQ的具有优良的管理界面
- MSMQ已经有较长的,是微软产品
- RabbitMQ的是较新的,开源的,免费的,以及由VMware主办
- MSMQ被安装在大多数Windows计算机默认
乌迪大汉和MassTransit人(克里斯·帕特森,德鲁卖方和特拉维斯·史密斯)都是才华横溢的人。
作为NServiceBus的原作者,我可能是有点对我自己的技术偏见,但我会尽力保持这个是平衡,我可以。
交通运输支持
无论NServiceBus和MassTransit支持的RabbitMQ和Azure的服务总线 ,但NServiceBus还支持:
- 亚马逊SQS
- Azure存储队列
- SQL服务器(使用普通表)
- MSMQ
上的RabbitMQ的话题
这个论点可以作出NServiceBus有RabbitMQ的更有力的支持-例如,在延迟交付的功能 ,而地下状态 。他们的“插件仍然被视为实验它由MassTransit支持,但我们不能保证什么比这个插件变得更保证本身。”
我们还与RabbitMQ的团队密切合作, 促进了.NET SDK整个生态系统的利益。
当涉及到Azure的服务总线
合作,我们有在Azure服务总线队的水平甚至更高, 超过70收受他们的.NET的核心SDK 。
当您使用NServiceBus,你的知识全部深度受益。
工装
这是最大的区别。
一旦你建立了庞大的系统,具有可识别性成所有不同的运动部件如何互相交谈变得非常重要。 MassTransit没有在这方面远远超出通过一个小型一体化诊断源到第三方工具,如应用见解或打开跟踪。
各地NServiceBus服务平台去颇有几分更远,让您能够看到所有端点序列图与能力ServiceInsight :
你也可以得到你所有的端点及消息的逻辑视图:
从本质上讲,你住你的系统架构的文档。
管理与监控
这是另一个领域,MassTransit没有非常多。 当你与集成第三方系统变得不可用,并且在您的系统一堆消息在错误队列中结束的,唯一的解决办法MassTransit具有可以手动操作这些消息回来以后使用RabbitMQ的铲插件 。
各地NServiceBus服务平台包括错误队列的监控,图形化工具,看看有什么原因是这些错误,以及重播那些失败的消息组,并看到他们实际上在一个简单的Web应用程序成功的所有处理能力所谓ServicePulse 。
还有这是定期运行,可以提供问题的预警信息启动失败之前健康检查的可视化。
最后,还有的性能监控提供了平台:
你真的得到完整的包,当涉及到生产支持。
长期支持和向后兼容性
虽然地下人一直在帮助人谁拥有它的问题非常好的Gitter或他们的谷歌集团 ,我不认为他们能提供旧版本的bug修复。 当你的生产系统已经存在了几年,你不能只是升级一切所有的时间,启动是重要的。
随着NServiceBus 支持包括 :
- 2年以上,每个主要版本
- 另外一个2年的扩展支持
- 关键问题保证响应时间
- 24x7可用性
咨询与培训
从脱机的角度来看,也有在NServiceBus可提供世界各地的公共课程,以及许多顾问谁可以在现场被带到启动一项项目或在出现问题时提供协助。 我从几家公司决定从MassTransit切换到NServiceBus,因为他们无法得到现场的人,当他们需要的时候听到。
许可
有些人仍然不知道NServiceBus是,它是免费供个人使用和创业公司 。
当涉及到商业用途 ,围绕NServiceBus的许可模式非常灵活,因为客户的广泛指示,并且可以非常合理管理。 当然,随着MassTransit,许可是免费的。
希望以某种方式帮助。
你总是可以使用班车(FOSS): https://github.com/Shuttle/shuttle-esb :)
文档(一直在提高): http://shuttle.github.io/shuttle-esb/
航天飞机项目已经持续了近2年,并用于生产系统。 这将是选择和你在一起共鸣的问题。
NServiceBus有着良好的纪录。 我以前用它在生产系统(1.9),但不能因为它已经商业化(在该点,我开始用班车)。
我还没有试过MassTransit。
我想所有的选择将具有基础(命令/事件/酒馆-SUB)。 然而,NServiceBus确实有传奇和数据总线的东西,虽然我认为这是很容易的,以服务总线的外部拉手数据本身作为你的端点消息处理程序等。 我不知道MassTransit是否具有传奇/数据总线,但班车肯定不会。
另一个要考虑的可能是你打算如何使用服务总线。 如果是一个产品的一部分,那么对于一个商业选择,如NServiceBus你需要考虑你的产品的用户对成本的影响,虽然它仍然是一些需要考虑内部开发它当然可以有道理的。
我知道它的晚附和关于这个问题,但对于bingleability的缘故,我不得不提到卤面 (我碰巧的主要作者)。
画谜现在是8岁左右,它已被用来四处移动的钱,从一开始就控制发电厂。
它支持最基本的排队系统,如MSMQ,RabbitMQ的,Azure的服务总线,Azure存储队列,亚马逊SQS等,但它也支持更有趣的东西喜欢使用MSSQL,PostgreSQL和Oracle作为传输。
文档维基是相当全面的,虽然很多人似乎得到通过,因为卤面API是这么容易被发现。
画谜一直是(而且将永远是)完全免费的。 这是麻省理工学院的许可,所以你基本上可以用它做你觉得什么样的。
如果你最终成为一个严重的卤面用户,你需要一个正式的支持协议和额外的工具,你可以订阅卤面临 ,这是由提供卤面FM (后面卤面该公司)。
目前,以上提及的“额外的工具”进来的形式舰队经理 ,它可以帮助推荐。 例如,车队经理完全取代错误队列 ,所以失败的信息得到存储在那里来代替。 这意味着,失败的信息可以查看,管理,并与车队经理点击几下随时重试。