技术开发 频道

BPEL或ESB:应该使用哪一个?

【IT168 技术文章】

    在设计 SOA 解决方案时,并不总是清楚应该使用 Web 服务 BPEL 流程,还是应使用 ESB 中介流。本文将介绍帮助您决定使用哪一个的一些注意事项。

    概述

    在 IBM  SOA 参考体系结构中(如图 1 所示),服务被分组为多个功能区,并通过企业服务总线(以下称为 ESB)进行通信。在理想情况下,每个功能区(如流程服务)都是“纯”功能区,为了实现关注点分离仅提供了一个服务类。

    图 1. SOA 参考体系结构
     


    不过,在现实世界中,存在重叠的任何产品集中通常都包含功能区。例如,WebSphere Process Server(以下称为 Process Server)是在参考体系结构中提供流程服务的软件组件。它是从 WebSphere MQ Workflow、WebSphere Interchange Server 和 WebSphere Business Integration Server Foundation 发展而来的。为便于用户升级前代产品,它包括了与旧产品中的功能等效的功能。例如,Interchange Server 包括了业务对象映射,该对象映射以接口映射形式存在于 Process Server 中。

    可以映射流入或流出业务流程的业务对象。映射还是 ESB 中的主要功能之一。因此,如果您同时拥有 Process Server 和 ESB,则需要决定应使用哪一个产品解决给定的业务问题,原因是这些区域存在重叠。

    还存在一些可能使用 Process Server 或 ESB 的其他用例。例如,假设需要使用两阶段提交调用三个现有服务。这称为组合服务。在 ESB 中,您可以使用中介流调用这些服务。中介流是作为事务提交或回滚的。您可以使用 WS-BPEL 微流调用这三个服务,同时提供事务性。这样,可以使用这两种产品作为解决方案。如何决定哪一种产品是正确的?

    ESB 概述

    ESB 是一种体系结构模式,而不是软件产品。不同的软件产品可以构成 ESB。在某些情况下,公司在不同的区域中使用多种产品,利用特定的功能来满足其独特的需求。可以将这些不同的产品联合在一起实现 ESB 模式。

    概括地讲,ESB 具有四个主要功能:

    消息路由:将传入消息发送到目的地,该目的地通过硬编码方式连接的逻辑确定或基于内容的动态方式确定。路由是启用服务虚拟化的关键功能。在调用方和服务之间建立中间层可以在调用方不知道更改的情况下移动服务的位置。

    消息转换:将传入消息从一种格式转换为另一种格式。例如,可以将逗号分隔的消息转换为 SOAP,这样可以将数据传递到 Web 服务。

    协议中介:传入消息使用不同的协议从发出位置发送。例如,传入消息可以使用 HTTP,而传出消息可以使用 WebSphere MQ。
   
    事件处理:事件的传入消息一般通过发布和订阅模型分发给许多端点。

    在给定的事务中,通常会合并这些主要高级功能。例如,传入消息可能是一个使用 SOAP/HTTP 的 Web 服务调用,而目的地是需要使用 WebSphere MQ 的固定长度消息格式的遗留系统。必须转换消息、协调协议并且必须将消息路由到正确的位置。

    对 ESB 编程通常涉及虚拟环境,并将逻辑表示为称为消息流或中介流的连接活动流。这些流都是事务型的,使用的是两阶段提交之类的机制,这样在失败时可以回滚整个流,或者在成功时提交整个流。这些流是无状态的;通常情况下是消息传入,流对该消息执行各种操作,然后发送传出消息。

    由于 ESB 的无状态事务特性,因此高性能是前提条件。在大型组织中,ESB 每天处理数百万条消息的情况并不少见。

    IBM 在 ESB 方面提供了多款软件产品。WebSphere ESB 是基于 WebSphere Application Server Network Deployment 平台构建的。构建它是为了支持 Web 服务、JMS 和 XML 之类的标准。WebSphere Message Broker(以下称为 Message Broker)是一种非 J2EE 产品,它支持 WebSphere ESB 中的标准(如 Web 服务),以及许多基于非标准的协议和数据格式。WebSphere DataPower 是一种硬件工具,它可以飞速执行 ESB 功能。总之,这三种产品都可以用作 ESB 的基础。

0
相关文章