什么是服务总线,什么时候需要?


101

我听说过有关NServiceBus的话题,但我还不太了解它是什么。他们声称自己是“ .net最受欢迎的开源服务总线”。

所以; 什么是“服务总线”,什么时候需要?


我参加聚会真的很晚,我不会将其发布为答案,因为它不是那样,但总之,如果您不知道为什么需要一个人,那么您可能不会...它可以解决特定问题您可能没有连接应用程序并为您的企业提供集中式API的问题。
战争

9
@Wardy我不同意您的说法。你不明白的地方或者不知道它是什么,这一事实并不意味着它不会帮助你了解它
克里斯蒂安·托马

那不是无知的借口,而是更多地指出,当您遇到服务总线解决的那种问题时,服务总线这个术语经常被提及,因此您将需要它,或者您将不需要它,因此永远不必担心它。
战争

我想补充这是一个编辑,但它会从根本上改变问题... NServiceBus现在被称为“特定服务平台”,并可以在这里找到particular.net(这是NServiceBus.com重定向到现在反正)。
Dan Atkinson

如果您不知道已经存在的事物的名称或概念,那么很可能会写下自己的事物。因此,很高兴了解它们,以便您可以使用它们(如果需要)
noelicus

Answers:


80

您可以将服务总线视为SOA的以太网。

首先,它引入了一种识别事物的语言,例如以太网中的IP地址。这个名字并不是固有的物理名称。

接下来,每个节点上都涉及一些物理问题,例如在总线上支持半连接通信的队列,或在隐喻中使用以太网卡。

除了物理之外,还有通信的“协议”部分,例如用于以太网的OSI堆栈。对于总线,这是应用程序代码使用的客户端库。

最终,您可以将服务总线视为构建分布式系统的下一个更高级别的抽象。您还可以将其用于客户端与服务器之间的通信,从而为您提供持久的单向消息传递,以及服务器将通知推送回客户端。

具体来说,一旦您对NServiceBus的排队技术感到满意,您就会发现NServiceBus非常轻巧且易于使用-您可以选择RabbitMQ,MSMQ,常规SQL表,Amazon SQS,Azure存储队列和Azure Service Bus。


谢谢!想想我现在已经了解了!实际上是在问这个问题成为会议你拿着,今晚准备了一点,但它并不像我会让它..
stiank81

12

查看Wikipedia中有关Enterprise Service Bus的文章。

在实现良好的面向服务的体系结构的永无止境的追求中,服务总线充当了另一层抽象层。服务总线可以处理良好的面向服务的体系结构(例如消息传递,路由和服务协调)背后的繁重工作。

如果您不确定为什么要这样,我建议您阅读一下什么可以构成一个好的面向服务的体系结构。这本书真正让我大开眼界,并证明了拥有Web服务和拥有真正的面向服务的体系结构之间的区别是Thomas Erl的面向服务的体系结构:概念,技术和设计


因此,我可以使用它来进行桌面客户端应用程序和服务器之间的通信吗?服务器位于内部。
stiank81 '04

你可以。您也可以将其用于不同服务,不同服务的不同版本等之间的通信(包括服务使用不同协议的情况)。
贾斯汀·涅斯纳

11

该术语是在SOA中引入的,SOA在某种程度上是EAI的后继者(流行语)。

什么时候需要?这是个好问题。它具有很多复杂性。

如果解决的问题多于其所带来的问题,凭经验可以解决。

认真的说,如果您具有异构环境,并且想要(使用不同的技术)使(不同的)应用程序与业务流程保持一致。然后使用BPEL进行编排编排可能会有所帮助(但这会通过迁移引入问题)

编辑:维基百科上没有的是实践:ESB可以使用特殊的连接器,用于Corba或Java Enterprise的旧终端应用程序进行ig适配,这意味着互操作性。缺点是围绕SOAP的100多个“标准”在不付出巨大努力的情况下就无法合作。

如果必须在两家大型保险公司合并后的六个月内互连IT系统,则肯定需要它。


那么-在与服务器端进行“简单”通信的桌面应用程序中,无需使用服务总线吗?它可以帮助我从服务器实现推送模型吗?还是在这种情况下痛苦比收获还多?
stiank81 '04

@ stiank81对不起,我阅读了(企业)服务总线并触发了突触。我检查了指向NServiceBus的链接,它们的目标相同,在客户端服务器应用程序中不需要这样的链接。这意味着一个业务流程中涉及多个应用程序的概念。如果它适合您?如果解决的问题多于它带来的问题。
堆高机

使用它“如果它解决的问题多于其引起的问题”,...就喜欢它。
noelicus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.