BPEL OR ESB

在设计SOA解决方案时,该使用BPEL,还是应使用ESB? 要解决这个问题,我们需要弄清楚BPEL和ESB的主要功能和优缺点。

 

结论:如果需求是以数据为中心的,则显然要选择 ESB, 如果需求是以流程为中心的,则显然要选择BPEL。

ESB的主要功能:

  • 消息转换:将传入消息从一种格式转换为另一种格式。例如,可以将逗号分隔的消息转换为 SOAP,这样可以将数据传递到 Web 服务。
  • 消息路由:将传入消息发送到目的地,该目的地通过硬编码方式连接的逻辑确定或基于内容的动态方式确定。路由是启用服务虚拟化的关键功能。在调用方和服务之间建立中间层可以在调用方不知道更改的情况下移动服务的位置。
  • 协议中介:传入消息使用不同的协议从发出位置发送。例如,传入消息可以使用 HTTP,而传出消息可以使用 WebSphere MQ。
  • 事件处理:事件的传入消息一般通过发布和订阅模型分发给许多端点。 

BPEL的主要功能:

  • 业务流程:流程可以是有状态和长时间运行的,或者是事务型微流。长时间运行的流程无法像微流那样回滚,不过,它们可以使用补偿处理程序撤消先前执行的活动。流程可用于实现组合服务。
  • 人工任务:业务流程的一个关键部分是能够将人员引入该流程。人工任务管理器启用一些步骤,通过这些步骤可以将人员作为一种服务来调用。工作流模式是使用 BPEL 扩展通过外部(参与)任务或内联任务进行支持的。

ESB 的优点:
  ESB 的主要优点之一就是处理消息。消息的传入和传出也许会用到协议或格式中介。当这些需求明显需要处理消息时,使用 ESB 可以提供许多优势,其中包括在转换中处理较复杂事务的能力。当这些需求需要使用 ESB 基本功能(如消息路由、转换或协议中介)之一时,则 ESB 是最佳选择。

  ESB 的另一个优点是性能。ESB 在计划上能够处理大量的消息。例如,如果需求是每天处理 200000 条消息,则 ESB 显然是较好的选择。

 

 

BPEL 的优点:
  BPEL 引擎的主要优点是能够编排业务流程。如果需求是处理具有复杂逻辑的流程,则BPEL是较好的选择。BPEL 支持选择分支循环等。ESB 中的逻辑通常非常简单,而 WS-BPEL 可以处理更复杂的情形。

  BPEL 引擎的另一个优点是能够让业务流程长时间运行并维持其状态。当需要状态时,不应使用 ESB,因为维护状态会占用许多自定义代码。如果需求是进行有状态的处理,则在选择时可以排除ESB。

  
  
 
  

 

你可能感兴趣的:(设计模式,活动,SOAP,websphere,SOA)