我听说过NServiceBus,但我并没有真正理解它是什么。他们声称自己是“.net最受欢迎的开源服务总线”。
什么是服务总线,我什么时候需要它?
我听说过NServiceBus,但我并没有真正理解它是什么。他们声称自己是“.net最受欢迎的开源服务总线”。
什么是服务总线,我什么时候需要它?
你可以将服务总线视为面向服务架构(SOA)的以太网。
首先,它引入了一种识别事物的语言,就像以太网中的IP地址一样。这个名称并不是某种固有的物理属性。
其次,在每个节点上都涉及到一些物理设备,例如在支持半连接通信的总线中使用队列,或者在比喻中使用以太网卡。
除了物理部分外,还有通信的“协议”部分,就像以太网的OSI栈。对于总线而言,这是应用程序代码所使用的客户端库。
最终,你可以将服务总线视为构建分布式系统的下一个更高级别的抽象层。你也可以将其用于客户端-服务器通信,以提供可靠的单向消息传递,并让服务器向客户端推送通知。
具体而言,一旦你接受了其使用队列技术的方式,你会发现NServiceBus非常轻量和易于使用,它支持RabbitMQ、MSMQ、普通SQL表、Amazon SQS、Azure Storage Queues和Azure Service Bus等多种选择。
查看维基百科文章,了解企业服务总线(Enterprise Service Bus)。
服务总线(Service Bus)作为另一层抽象,在实现良好的面向服务的架构(Service Oriented Architecture)中扮演着重要角色。服务总线可以处理一些后台任务,例如消息传递、路由和服务协调。
如果您不确定为什么需要这样的东西,我建议您先了解什么是优秀的面向服务的架构(Service Oriented Architecture)。让我真正认识到只有拥有真正的面向服务的架构(Service Oriented Architecture),才能区分出与仅仅具备Web服务(Web Services)的区别的书籍,是Thomas Erl的《面向服务的架构:概念、技术和设计》(Service-Oriented Architecture: Concepts, Technology, and Design)。
这个术语是在 SOA 中引入的,它在某种程度上是EAI的继承者(作为时髦词)。
何时需要?这是一个很好的问题。它带来了很多复杂性。
一个经验法则可能是,如果它解决的问题比它引起的问题更多,那么就可以采用。
严肃地说,如果您拥有异构环境并想要将(不同技术使用的)应用程序与业务流程对齐。 然后使用BPEL(但这会引入迁移问题)进行管弦乐和舞蹈编排可能会有所帮助。
编辑:维基百科上没有的是实践: ESB可以使用特殊连接器适应Corba或Java Enterprise等旧终端应用程序以实现互操作性。缺点是SOAP周围的100多个‘标准’不合作需要巨大的努力。
如果您必须在2个大型保险公司兼并后的6个月内相互连接IT系统,那么您绝对需要它。