我正在研究架构模式,准确地说是企业服务总线 (ESB)。在阅读了这篇文章Enterprise Integration之后,几乎没有经验,我想知道 BizTalk 是 ESB 还是只是 EAI(集线器/辐条或总线)?
我发现了这个NServiceBus 和 Biztalk,将 BizTalk 描述为中央消息代理。
考虑其他 ESB 框架(NServiceBus 和 Rhino Service Bus)。这些框架没有处理消息的中心点。
Biztalk 是 EAI 而不是 ESB?
非常感谢
我正在研究架构模式,准确地说是企业服务总线 (ESB)。在阅读了这篇文章Enterprise Integration之后,几乎没有经验,我想知道 BizTalk 是 ESB 还是只是 EAI(集线器/辐条或总线)?
我发现了这个NServiceBus 和 Biztalk,将 BizTalk 描述为中央消息代理。
考虑其他 ESB 框架(NServiceBus 和 Rhino Service Bus)。这些框架没有处理消息的中心点。
Biztalk 是 EAI 而不是 ESB?
非常感谢
BizTalk 被 Microsoft 抨击为具有 ESB 功能 - 请参阅BTS ESB 工具包
但是,“ESB”一词涵盖了一个非常广泛的领域,并且关于 ESB 的确切定义存在很多主观性。恕我直言,BizTalk 声称作为 ESB 是全面的存在弱点(在该术语的 > 2010 定义中)。
FWIW 我们发现 BTS 非常适合:
更新,有一些进一步的比较经验
BizTalk 是一个消息传递和工作流编排平台,您可以在其上构建 ESB 行为和功能。为了使这更容易,并使 BizTalk 上的 ESB 实现标准化,Microsoft 发布了 BizTalk ESB 工具包 - 一组指南、模式和代码。
EAI 和 BPM 的概念已经存在了一段时间,因此有许多公司利用 BizTalk 来创建这些问题的解决方案。在 BizTalk 服务器上托管完整 ESB 的公司要少得多,而且随着 WCF/WF/NServiceBus 的出现,当然还有 Azure 服务总线的出现,采用速度肯定会放缓。
所以总而言之,开箱即用的 BizTalk 既不是 EAI 也不是 ESB,但可以同时使用多个开发人员来解决问题。
通过“ EAI 或 ESB ”,我假设您想知道 BizTalk 是遵循 Hub&Spoke 还是 Bus 架构。
从架构模式的角度来看,集成解决方案大致属于以下两种模式之一:
Hub andspoke:这涉及到一个集中的消息代理向各个接收者发送消息,而所有发送者只将他们的消息发送给这个代理。因此,发送者和接收者都不需要相互了解。这通常是许多人所说的 EAI(尽管绝对有可能实现遵循 BUS 模式的 EAI 解决方案)。遵循此模式的解决方案易于开发和管理。所有路由逻辑都在一个地方集中管理 - 在集线器中。但正如您已经猜到的那样,这有一个明显的缺点——单点故障。如果集线器崩溃,一切都会停止。此外,该模型的扩展性不是很好。
BUS:围绕这种模式开发的企业集成解决方案通常被称为 ESB。这里没有智能的中央权威。所有发送者都在总线上发布他们的消息。接收者需要足够智能,才能确定哪些消息是发给他们的,并将它们从总线上带走。因此发送者和接收者只需要知道总线。但是这里的路由逻辑分布在接收器上,因此没有单点故障。此外,该模型具有高度可扩展性。然而,这样的解决方案相当复杂并且难以管理。
谈到 BizTalk 遵循哪种模式的问题 - 它是这两种模式的混合体。
Hub 的外观非常明显,具有集中的消息引擎和中央MessageBox 数据库。这提供了中心方法典型的简单性和易于管理性。
但是,如果您查看 BizTalk 体系结构,您可以拥有一个主机,其主机实例分布在多个服务器上。也可以在不同的服务器上配置不同的 BizTalk 数据库,如 MessageBox、Tracking、Ent SSO 等。这使得 BizTalk 解决方案比普通的集线器实现更具可扩展性和容错性 - 这是一种通常归因于总线方法的行为。
希望这能回答你的问题。
BizTalk 无疑是一个 ESB。EAI 是一个比较松散的概念——BizTalk 当然可以部署来支持 EAI,而且它还可以做更多的事情。
BizTalk 不仅仅是一个 ESB,但肯定符合要求。该链接有点旧,但可以回答您的确切问题。
编辑:这是一个更新的 MS 链接,介绍了实现的细节。
Biztalk Server withot "ESB Toolkit" Is not an ESB. Because of the following:
Regarding to your qustion, Yes BizTalk Server is EAI Product
BizTalk 可以用作 EAI 和 ESB。
对于 ESB,BizTalk 服务器架构是发布订阅的,可以将单个消息发布到充当消息传递主干总线的消息框。订阅该消息的一个或多个目标系统可以接收该消息。当然,您可以通过使用 BizTalk 服务器(如映射器工具)和使用管道组件来获得更多功能和特性。
为了用作 EAI,BizTalk 为您提供管理业务逻辑的编排、连接到系统(也是旧版)的 LOB(业务线)适配器、映射器工具、规则引擎以及您需要的许多东西,以便集成不同的公司内外的系统。
绝对地!Biztalk 来自 EIS 背景,这对于 ESB 作为跨混合技术平台的面向服务架构的基础架构背板非常有意义。
在之前的一家公司中,出于功能和成本较低的原因,我们选择了 Biztalk 而不是 IBM ESB 产品。
它是微软,所以你得到你所支付的,但仍然值得研究。
我同意这里所说的大部分内容。即使使用 EBS 工具包,将 BizTalk 宣传为一个包罗万象的 EBS 解决方案也是一种延伸。
为了解决这里提出的几点...
•BTS 比同步进程更适合异步进程——延迟将根据系统负载、节流状态等而变化。
未更改默认值的 BizTalk 主机不适合低延迟。但是这些主机是要经过调整的。开箱即用的配置不适合任何需要吞吐量的情况。在我走进一个回避 BizTalk 的组织的经历中,总是有一个未经调整的单一主机设置位于它的中间。这有点类似于在没有索引的 dbms 中创建表,遇到性能问题并说 dbms 本身很糟糕。
•BTS 在服务和模式的版本控制方面很麻烦(需要新的部署)
与任何开发平台一样,您需要制定部署策略。如果模式在命名空间中有版本,则不需要重新部署任何东西。一个新版本可以部署而不需要任何东西。
就服务端点而言,BizTalk 可以在不使用 IIS 的情况下托管 Web 服务(BizTalk 可以像 IIS 一样使用 HTTP.SYS 来托管)。在 BizTalk 中托管进程内服务只是导入绑定的问题,无需停止 BizTalk 中的任何内容即可完成。在这些端点中,您也可以实现版本控制(如 http:.../thing/v1、http:.../thing/v2 等)。
无论如何~5年过去了,我相信你现在已经得出结论了:)
BizTalk 可以同时执行 ESB 和 EAI,这取决于您如何设计 biztalk 应用程序。