我正在研究架构模式,特别是企业服务总线(ESB)。在阅读了这篇文章《企业集成》之后,虽然没有太多经验,但我想知道BizTalk是一个ESB还是只是一个EAI(中心/辐条或总线)。
我发现这篇NServiceBus和BizTalk的文章将BizTalk描述为中央消息代理。
考虑到其他ESB框架(如NServiceBus和Rhino Service Bus),这些框架没有处理消息的中心点。
BizTalk是EAI而非ESB吗?
非常感谢!
我正在研究架构模式,特别是企业服务总线(ESB)。在阅读了这篇文章《企业集成》之后,虽然没有太多经验,但我想知道BizTalk是一个ESB还是只是一个EAI(中心/辐条或总线)。
我发现这篇NServiceBus和BizTalk的文章将BizTalk描述为中央消息代理。
考虑到其他ESB框架(如NServiceBus和Rhino Service Bus),这些框架没有处理消息的中心点。
BizTalk是EAI而非ESB吗?
非常感谢!
微软将BizTalk推销为具有ESB功能的工具-请参见BTS ESB toolkit
然而,“ESB”这个术语涵盖了一个非常广泛的领域,对于ESB的确切定义存在很多主观性。在我看来,BizTalk声称作为ESB全面是有弱点的(按照大于2010年的定义)。
FWIW我们发现BTS非常适合:
更新,附带一些比较经验
BizTalk是一种消息和工作流编排平台,您可以在其上构建ESB行为和功能。为了使这更加容易,并在BizTalk上标准化ESB实现,微软发布了BizTalk ESB Toolkit - 一套指南、模式和代码。
EAI和BPM的概念已经存在一段时间了,因此有许多公司利用BizTalk创建了解决这些问题的解决方案。但在BizTalk服务器上托管完整ESB的公司非常少,随着WCF/WF/NServiceBus和Azure Service Bus的出现,采纳情况显然有所放缓。
综上所述,BizTalk开箱即用既不是EAI也不是ESB,但可以通过应用若干开发人员来实现两者的功能。
BizTalk肯定是一个ESB。EAI更多的是一个宽泛的概念 - BizTalk肯定可以被部署来支持EAI,而且它还可以做更多的事情。
如果没有"ESB Toolkit",Biztalk Server就不是ESB。
关于您的问题,是的,BizTalk Server是EAI产品。
我同意这里说的大部分内容。即使使用EBS工具包,将BizTalk作为全面的EBS解决方案也是一种牵强附会。
针对这里提出的几个观点...
•BTS更适合异步过程而不是同步过程-延迟时间将因系统负载、节流状态等而变化。
BizTalk主机默认设置下并不适合低延迟。但是这些主机是可以进行调整的。开箱即用的配置不适用于任何需要吞吐量的情况。在我的经验中,当我走进一个被避开BizTalk的组织时,总会有一个未调整的单一主机设置坐落其中。这有点类似于在没有索引的数据库管理系统中创建表格,然后出现性能问题并说dbms本身很糟糕。
•BTS在服务和模式版本控制方面很麻烦(需要新部署)。
就像任何开发平台一样,您需要有部署策略。如果模式在命名空间中具有版本,则无需重新部署任何内容。新版本可以在不关闭任何内容的情况下部署。
就服务端点而言,BizTalk可以在不使用IIS的情况下托管Web服务(BizTalk可以像IIS一样使用HTTP.SYS进行托管)。在BizTalk中托管进程内服务只是导入绑定的问题,可以在不停止BizTalk中的任何操作的情况下完成。在这些端点中,您也可以实现版本控制(例如http:... /thing/v1,http:... /thing/v2等)。BizTalk可以用作EAI和ESB。
对于ESB,BizTalk服务器架构是发布-订阅的,单个消息可以发布到消息框中,该框充当消息骨干总线。该消息可以被订阅该消息的一个或多个目标系统接收。当然,使用BizTalk服务器可以获得更多功能和特性,例如映射器工具和使用管道组件。
对于EAI的使用,BizTalk为您提供了编排来管理业务逻辑,LOB(业务线)适配器以连接到系统(也包括传统系统),映射器工具,规则引擎以及您需要集成公司内外不同系统所需的大量功能。
BizTalk 可以同时实现 ESB 和 EAI,这取决于您如何设计 BizTalk 应用程序。