103

我听说过有关NServiceBus的讨论,但我还没有真正理解它是什么。他们声称是“.net 最流行的开源服务总线”。

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

4

3 回答 3

81

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

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

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

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

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

具体来说,您会发现 NServiceBus 非常轻量级且易于使用,一旦您对它使用队列技术(您选择 RabbitMQ、MSMQ、常规 SQL 表、Amazon SQS、Azure 存储队列和 Azure 服务总线)感到满意。

于 2010-04-28T05:28:03.823 回答
12

查看企业服务总线的 Wikipedia 文章。

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

如果您不确定为什么需要这样的东西,我建议您阅读什么是好的面向服务的架构。真正让我大开眼界并证明拥有 Web 服务和拥有真正的面向服务架构之间的区别的书是 Thomas Erl 的《面向服务的架构:概念、技术和设计》

于 2010-04-27T20:27:15.600 回答
11

这个术语是随着SOA引入的,它在某种程度上是EAI的继承者(作为流行词)。

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

如果它解决的问题多于引起的问题,则可以根据经验法则。

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

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

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

于 2010-04-27T20:58:43.023 回答