当前位置: 首页 > 知识库问答 >
问题:

用于EAI的Biztalk与用于EAI场景的ESB

长孙兴德
2023-03-14

我对ESB或Biztalk不太熟悉,如果您已经拥有Biztalk,我正试图从EAI的角度了解什么是最有意义的。据我所知,Biztalk是一个消息代理(集线器和分支),ESB模式是一个反代理,其中概念上的“总线”由各个分布式组件组成,这些组件以某种方式相互通信。消息代理本质上代表单点故障,与ESB不同,ESB中的一个组件故障不会导致整个“总线”停机。我的理解是,Biztalk是单片的,因为消息传递、业务流程是紧密耦合的,扩展是有问题的。

如果当前的情况是:

  • Biztalk已主要用于根据从外部各方收到的不同文件运行不同的业务流程
  • 目前与CRM和payroll等系统紧密耦合的一系列内部自定义应用程序需要进行重构,以提取出这些依赖关系

直接使用Biztalk或Biztalk ESB toolkit来实现ESB功能有意义吗?或者使用合适的ESB实现(如基于Azure服务总线的NServiceBus或Windows服务总线)有意义吗。与使用适当的ESB相比,直接使用Biztalk实现EAI有哪些优点和缺点。每个应用程序是否都会对Biztalk产生硬依赖,这是否可取?

我将把这作为一个开放式的讨论,因为没有正确或错误的答案。

@斯图尔特:谢谢你的回复。我已经阅读了您发布的几个链接,但仍然没有弄清楚Biztalk作为ESB解决方案与使用NServiceBus之类的解决方案是否有意义。两者似乎都以某种方式实现了“ESB”模式。问题是哪一个有更干净的实现、更好的开发经验和较低的启动时间。到目前为止,我的评估(仅限于纯研究)是可以使用Biztalk,但这很痛苦,需要非常专业的开发技能。延迟和扩展是有问题的,Biztalk最终将被吸收到(Azure?)服务总线和Biztalk SKU将不再存在。另一方面,像NService bus这样的框架具有相对较低的启动时间,可以很容易地被具有良好性能的开发人员接受。NET编程技能,可以轻松地与Biztalk进行接口。鉴于上述情况,即使您目前拥有Biztalk,还是选择Biztalk路线,或者选择合适的ESB(如NService Bus),这是否仍然有意义?

共有1个答案

姬向明
2023-03-14

我相信你的开放式问题的许多组成部分已经涵盖了SO:

  • 使用BizTalk而不是NServiceBus或MassTransit的优缺点
  • 什么样的ESB系统最适合客户。净堆栈
  • Microsoft BizTalk Server vs Azure AppFabric服务总线
  • BizTalk 2009 ESB混乱
  • BizTalk是ESB吗

然而,依我看,这只是一个有缺陷/短视的实现,这将导致应用程序和endpoint之间的紧密耦合。松耦合很容易实现:(即使没有ESB工具包):

  • 通过使用多部分消息和规范的内部模式来解耦依赖关系。
  • 编排和端口应该通过消息框发布来解耦

单点故障也是可以避免的:

  • 在通信适配器上配置重试和备用/备份传输

在我看来,将BizTalk用作ESB时的致命弱点是缺乏保证的延迟,例如,在这里,如果BTS进入节流状态,这种延迟就会加剧。

最新消息

在我看来,选择归根结底是一个问题,即您是否能够控制环境中的所有系统。

如果您正在集成一个内部企业,该企业仅由您直接控制的同质、当代(主要是SOA和EDA)应用程序组成,MassTransitNServiceBus可能比这项工作更能提高生产率和启动时间。

 类似资料:
  • MySQL 是目前世界上最流行的开源关系数据库,大多应用于互联网行业。比如,在国内,大家所熟知的百度、腾讯、淘宝、京东、网易、新浪等,国外的 Google、Facebook、Twitter、GitHub 等都在使用 MySQL。社交、电商、游戏的核心存储往往也是 MySQL。 任何产品都不可能是万能的,也不可能适用于所有的应用场景。那么 MySQL 到底适用于哪些场景又不适用于哪些场景呢? 1.

  • 我需要对表的总数进行断言,当我在映像表中为总数编写XPath时,这样做对所有场景都不起作用。我知道原因,因为表是动态的,所以有时它只有1个图像,有时它有5个图像,所以我很难编写适用于所有场景的x路径。 对于我所写的附加图像:在这里输入图像描述WebElement totalElement=driver。findElement(By.xpath(“/*[@id=“image_table”]/tbod

  • 我试图在独立应用程序中使用AspectJ,但似乎不起作用。 以下是我创建的类- 同样在src/META\u-INF文件夹下,我创建了aop。xml文件 然后在我尝试运行测试时从命令行执行。java使用下面的命令实现系统。出来通知中的println无法打印- 有人能告诉我我做错了什么吗? 谢谢AA

  • 本文向大家介绍react的mixins有什么作用?适用于什么场景?相关面试题,主要包含被问及react的mixins有什么作用?适用于什么场景?时的应答技巧和注意事项,需要的朋友参考一下 1.mixin的作用是抽离公共功能,不存在渲染dom的需要,所以它没有render方法。如果你定义了render方法,那么他会和组件的render方法冲突而报错。 2.mixin不应该污染state,所以他也没有

  • 当演员在另一个班级时,我很难让MoveToAction在演员身上工作(menuBackground)。我在下面附上了相关代码——这根本不会让演员动起来。 我成功地将其他操作应用于MainMenuScreen类中的根阶段,以及MainMenuScreen类中的其他参与者(按钮),但没有成功地将操作应用于单独类中的参与者。 我尝试过将MoveToAction放在Menubackground类中的act

  • null 因此,正如您所看到的,这是一个极其异步的场景。如果我使用Cucumber来触发它,我可能可以创建一个步骤定义,在晚上10点之前将100美元的余额插入到帐户中,但使用Cucumber来触发在晚上11点运行批处理是不现实的,因为批处理作业通常是由操作员使用他们自己的调度工具(如Control-M)执行的。然后让cucumber等几个小时,听几个小时,然后验证应计利息,我不确定我是否会遇到超时