科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用WebSphere ESB构建企业服务总线之一

用WebSphere ESB构建企业服务总线之一

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们正在编写的这批新系列文章有助于促进您使用 WebSphere ESB,并解决您也可能遇到的类似问题。本文是系列文章中的第一篇,我们将探讨 WebSphere ESB 如何提供了 SIBus 所没有的功能。

作者:佚名 来源:论坛整理 2007年11月17日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
WebSphere ESB 与 SIBus 的比较

  什么是 SIBus?

  SIBus 是基础 WebSphere Application Server 中服务集成功能的非正式名称(也是 Websphere Application Server 管理控制台上的链接)。了解 SIBus 的主要功能很有帮助,因为只有一种功能将来可用作由 WebSphere ESB 构建的 ESB 的一部分:

  SIBus 的核心是一个用 Java  编写的完整 JMS V1.1 提供程序实现,支持使用 JDBC 兼容数据库的持久性消息。在 WebSphere Application Server 中,SIBus 中的缺省 JMS 提供程序提供健壮的、基于 J2EE 的消息引擎,主要提供企业级服务质量,如可靠性和高可用性。WebSphere ESB 使用此缺省 WebSphere JMS 提供程序来支持 JMS 连接性。

  称为 MQLink 的 SIBus 功能提供指向 MQ 队列管理器的“链接”。对于 MQ,SIBus 相当于另一个队列管理器,对于 SIBus,队列管理器相当于另一个 SIBus。此功能经常与 WebSphere ESB 6.0.1 一起使用,以链接 MQ 系统——不过,在 WebSphere ESB 6.0.2 中,本机 SCA MQ 绑定是连接 MQ 的首选方法。

  SIBus 支持 Web 服务。WebSphere ESB 将 SCA 绑定用于不使用 SIBus 的 Web 服务。

  SIBus 具有使用服务数据对象的中介编程模型;不过,它与 WebSphere ESB 中的 SCA 和 SMO 编程模型不同。

  总之,在后续文章中,我们重点将 SIBus 用作 WebSphere Application Server 的缺省 JMS 提供程序,将不使用 SIBus 的其他功能。

  术语“SIBus”实际上包括多个不同的部分,在将其与 WebSphere ESB 比较时,我们需要分别对它们进行分析。在 WebSphere Application Server 中,SIBus 的核心是消息传递基础结构和缺省的 JMS 提供程序,因此,在此基础上构建的每个 WebSphere 产品都使用此缺省的 JMS 提供程序进行消息传递。而且,所谓的中介处理程序可以动态访问消息。最后,称为 MQLink 的功能支持 SIBus 和独立 WebSphere MQ 环境之间的集成。考虑到这些后,让我们看一看 WebSphere ESB 和 SIBus 之间的关系,特别是了解二者关联的以下五种方式:

  •   为构建 ESB,WebSphere ESB 和 WebSphere Integration Developer 提供了 SIBus 没有的功能
  •   WebSphere Application Server/SIBus 将 JMS 提供程序用作 WebSphere ESB JMS 绑定的缺省 JMS 提供程序
  •   SIBus 中介和 WebSphere ESB 中介之间的差异
  •   将 SIBus MQLink 与 WebSphere ESB 一起使用
  •   SIBus 和 WebSphere ESB 基础结构的共存和集成

  为构建 ESB,WebSphere ESB 和 WebSphere Integration Developer 提供了 SIBus 没有的功能

  不过,在仅使用 SIBus 功能时,配置过程可能非常麻烦,需要多个手动步骤。而且,必须手动编码中介(在 SIBus 中,称为中介处理程序),而没有任何工具支持。

  由于 WebSphere ESB 是通过策略 SCA/SDO 编程模型构建的,所以在 WebSphere Integration Developer 中有强大的工具,通过可视化的导入和导出接口结构简化了中介流组件的开发。而且,顾名思义,中介流组件本身包含一个流,该流描述当消息通过 ESB 时如何对其进行处理。WebSphere Integration Developer 提供另一个可视化工具来组装中介流,从而让您可以拖放预先构建的中介基元,该中介基元构成消息流经的中介流组件。例如,一种中介基元支持通过 XSLT 样式表进行消息转换,另一种中介基元支持通过流的消息的自动记录。描述此工作方式的一篇好文章是 WebSphere Enterprise Service Bus 与 WebSphere Integration Developer 入门。您还可以构建自已的自定义中介基元,使之包含工具中不再提供的特定逻辑。为 WebSphere Enterprise Service Bus 开发自定义中介 是一篇描述如何构建自定义中介基元的文章。

  SIBus 中介处理程序框架根本不支持对流进行可视化建模的概念。可以回忆一下以前的系列文章,必须将处理程序创建为实现特定接口的普通 Java™ 类。没有提供任何可视化工具,并且不存在任何预定义的处理程序。

  此外,对于同步调用,WebSphere ESB 支持不同的交互模式与请求和响应消息的自动关联,而对于为异步调用组件,则支持 SCA API,从而在请求和响应之间提供回调机制和关联。开发人员必须使用 SIBus 来自定义代码异步支持和关联逻辑。

  因此,WebSphere ESB 和 WebSphere Integration Developer 的组合创建了功能强大的开发和运行时工具集,大大加快了 ESB 的开发速度,这是 SIBus 无法比拟的。

  WebSphere Application Server/SIBus 将 JMS 提供程序用作 WebSphere ESB JMS 绑定的缺省 JMS 提供程序

  WebSphere ESB 就像 WebSphere 家族中的许多其他产品一样,是基于 WebSphere Application Server 构建的。它使用 J2EE™ 运行时以及应用服务器支持的其他功能;例如,支持集群的功能和工作负载管理。SIBus 是 WebSphere Application Server 的功能特征;因此,每个 WebSphere ESB 安装也自动含有 SIBus 功能。

  与 SCA 组件(例如 WebSphere ESB 中介流组件)通信的一种方式是使用 JMS 绑定。客户机或请求程序通过 JMS 将消息发送到 ESB;而对于请求/响应操作,则通过独立 JMS 队列接收响应消息。WebSphere ESB 利用缺省 JMS 提供程序来提供 JMS 实现。因此可以这样说,从 JMS 角度而言,WebSphere ESB 位于 SIBus JMS 提供程序之上并使用该提供程序,或者说 WebSphere ESB 和 SIBus 是互补的。注意,当为 WebSphere ESB 创建 JMS 绑定时,WebSphere Integration Developer 工具会自动生成所需的 SIBus 构件(如目的地等),从而使用对用户透明的 JMS 提供程序。

  SIBus 中介和 WebSphere ESB 中介之间的差异

  如上所述,WebSphere ESB 和 SIBus 都提供中介功能。WebSphere ESB 可让您开发自已的自定义中介基元,而 SIBus 则利用中介处理程序框架。但是一定要注意,二者的中介框架实现、API、包装和管理模型是不同的。

  几乎在任何情况下中介都需要访问消息本身,以便操作、记录和转换消息,不管在任何特定用例下,都是如此。SIBus 和 WebSphere ESB 将 SDO 用作通过总线的消息流的表现机制。对于 WebSphere ESB,使用称为 Service Message Objects (SMO) 的 SDO 扩展。因此,尽管消息的准确表示形式在两种技术中不同,但是访问消息内容所需的代码类似。

  在大多数情况下,从 SIBus 迁移到 WebSphere ESB(反之亦然)需手动执行——迁移的复杂性取决于中介代码执行的内容。在本系列的后续文章中,我们将向您介绍如何替换我们开发的现有中介处理程序,以便在使用 WebSphere ESB 时可以通过 SIBus 与自定义中介基元一起使用,我们还将讨论迁移时的注意事项。

  另外,SIBus 还提供非预构建的中介处理程序,而 WebSphere ESB 附带大量的中介基元,因此您可能根本不需要编写自定义代码。

  将 SIBus MQLink 与 WebSphere ESB 一起使用

  由于 SIBus 充当 WebSphere Application Server 的 JMS 提供程序,因此每当需要 JMS 功能时,WebSphere ESB 可以重新使用它,您可以利用 SIBus 提供的其他功能轻松地将 WebSphere ESB 与现有 WebSphere MQ 环境集成。

  SIBus 通过其 MQLink 功能提供到 WebSphere MQ 的连接,该连接使 SIBus 实例能够像另一个队列管理器一样与 MQ 队列管理器通信。这可以将消息从 MQ 客户机发送到 MQ 队列,然后将消息自动转发到 SIBus 中的目的地。在此基础上,通过 JMS 导出将消息发送到中介流组件。类似地,还可以从 WebSphere ESB/SIBus 中将消息发送到实际上是 MQ 队列的目的地。

  不过,使用此方法将 WebSphere ESB 与 WebSphere MQ 集成存在一些缺陷。开发人员必须熟悉和使用配置的 SIBus 资源,而且在 MQLink 支持的故障转移的配置上还存在一些限制。

  在 WebSphere ESB V6.0.2 中,添加了新的 MQ SCA 本地绑定,我们建议在 MQLink 上使用该绑定。

  SIBus 和 WebSphere ESB 基础结构的共存和集成

  最后一点是 WebSphere ESB 和 SIBus 可以共存,并且可以集成独立的实例。如果您已经具有现有 SIBus 环境,那么您可以通过消息引擎的配置将一个或多个 WebSphere ESB 实例迁移到该环境,并且通过外部总线链接跨计算单元进行迁移。SIBus 和 WebSphere ESB 可以通过多个协议(例如通过 SOAP/HTTP 或 JMS)交换消息。您可以在不影响现有 SIBus 中介的情况下,通过中介流组件开始运行消息,并且每当您做好准备时,就可以将中介从 SIBus 迁移到 WebSphere ESB。

  结束语

  对于此系列文章中的后续文章,我们将继续使用以前的技术场景。在这些文章中,我们将:

  • 详细讨论如何执行一些高级的 Web 服务功能;例如,如何操作 SOAP 标头。
  • 回顾我们以前使用的协议转换示例,其中基于 JMS 的客户机可以通过总线与 SOAP/HTTP Web 服务通信。
  • 通过一个示例讨论如何将 WebSphere ESB 和 WebSphere Process Server 一起使用。
  • 通过使用一个现有中介处理程序的示例,讨论如何将 SIBus 中介处理程序迁移到 WebSphere ESB 中介基元。我们将使用以前系列文章中的 JMS 消息传递示例和日志中介,但这次是在 WebSphere ESB 上实现并部署它。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章