NServiceBus 到底是 ESB 还是轻量级 ESB?还是更像具有持久/可靠消息传递的 WCF?在我看来,它更像是一个消息传递框架而不是 ESB。
只是想要一些指针,因为我刚刚开始研究不同的 ESB 产品以及它们能做什么或不能做什么。
NServiceBus 到底是 ESB 还是轻量级 ESB?还是更像具有持久/可靠消息传递的 WCF?在我看来,它更像是一个消息传递框架而不是 ESB。
只是想要一些指针,因为我刚刚开始研究不同的 ESB 产品以及它们能做什么或不能做什么。
NServiceBus 绝对是一个 ESB。句号。
Enterprise Service Bus,一种总线,意思是通过设计允许系统的组件分布和独立工作的东西。总线本身也是分布式的。一个组件或服务的故障不会影响连接到总线的其他组件的可用性。
公共汽车的对面是经纪人。代理在系统中呈现单点故障。像 MS BizTalk 这样的东西是代理,而不是 ESB。
更新
只是为了详细说明 NSB 中的企业支持
- 支持的消息传递模式是单向即发即忘(持久和快速)、相关的请求-响应、发布-订阅。其他一切都可以建立在此之上。
- 事务性消息处理和自动重试
- 使用分配器进行负载平衡- 使用性能计数器进行
可配置的审计和监控
- 内置的长时间运行的进程管理
不胜枚举...使 NServiceBus 成为ESB
一些消息代理产品可以以“联合模式”部署,这使得这些部署是分散的。分散式部署类型与总线架构风格非常吻合。所以,我想,这取决于。但是,集中部署只是一个企业服务代理,而不是总线。
不,我不认为 NServiceBus 是一种 ESB 产品,它也绝对不是一般的 EAI 工具。
如果我们要与其他工具进行比较,NServiceBus 更接近于 JMS api(例如 spring-jms)和 AMQP。它是一个框架,可帮助您使用友好的编程语法与消息队列交互并在应用程序中实现常见的消息传递模式(例如发布/订阅、请求/回复、死信、“传奇”)。
而传统上在 EAI 行业中众所周知的 ESB 产品是一个平台,它有助于在企业环境中集成许多异构应用程序。尽管不同的 ESB 产品提供了不同的特性,但它们都具有使它们有用的某些共同特性,主要是它们广泛收集各种开放和专有协议和服务的连接器(包括消息队列,还有其他东西,例如 WS -*, sftp, SAP, Siebel, rdbms, xmpp, websockets/comet, corba, edi),以及企业集成模式的一整套即用型实现(根据黑皮书),因此您无需自己重新实现它们以编排复杂的集成逻辑,例如转换、转换、路由、优先级、业务规则、策略执行,
NServiceBus 不提供与执行任何集成工作远程相关的功能,也不是为此而设计的。它是您用来在应用程序中实现消息传递模式的东西,但不会是您为 EAI 项目选择的东西。
好吧,我认为 nServicebus 肯定是一个 ServiceBus,不确定你是否可以将其称为“企业”ServiceBus 而无需花费数十万。不过说真的,您需要考虑是否真的需要 ESB。他们中的大多数人承诺会带来大量财富,但会带来大量开销,并且很难实现价值。我在一家大型企业中使用过 WSO2,它是我们的 3 个 ESB 之一。非常有进取心,由 OPs 团队运行,而且真的很痛苦,因为我们必须与另一个团队打交道来建立和运行我们的系统。其他问题包括所谓的功能,如消息路由或消息翻译。当然该产品可以做这些事情,但它会让你脱离你的开发环境,让你担心更多的事情。代码和/或配置传播到更多地方,更多的事情来管理更多可能出错的事情。这就是我喜欢 nServiceBus 的地方,它对开发人员来说非常容易访问。我喜欢的另一个实现是 Azure ServiceBus。显然,它的功能并不全面,可能也不是您想要的,但我喜欢开发人员的可访问性和自助服务性质,这些都是我会关注的特征。
企业服务总线是一种复合 SOA 模式。如果您查看 Thomas Earl 的书籍,这里是 ESB 包含的模式
据我所知(有限),NServiceBus 确实应用了其中一些模式 - 其余的(例如:规则集中化和策略集中化)预计将由用户实施。根据这个定义,BizTalk 也是一个 ESB。
要记住的重要一点是,使用 NServiceBus 或 Biztalk 或其他任何东西都不会使您成为 SOA。事实上,如果使用不当,您可能会发现自己与供应商捆绑在一起,从而违背了 SOA 的第一个原则——供应商中立性。
你的问题有点开放式。最好概述一下您需要 ESB 的哪些功能,然后询问 NSB 是否支持这些功能。
更新
我认为我应该更新我的答案以回应克里斯的回答。
虽然很方便,但创建两个类别(Bus 和 Broker)是错误且无益的,正如 Chris 所说的那样。
服务总线在服务及其消费者之间提供传输和平台中立的中介连接。在此定义下,使用消息代理模型的产品也可以用作服务总线。
企业服务总线提供这种连接,但也可以添加企业级中介,例如:
因此,我认为当您选择工具集时,您应该首先确定您需要哪些类型的功能,然后您可以选择最适合您需求的产品。