IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Architecture | SOA and Web services | WebSphere  >

探索企业服务总线,第 2 部分: 为什么 ESB 是 SOA 的基本组成部分

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

讨论

英文原文

英文原文


级别: 中级

Greg Flurry, 资深技术主管 (STSM), IBM 
Rachel Reinitz (rreinitz@us.ibm.com), 杰出工程师, IBM 

2008 年 4 月 17 日

本文是本系列的第 2 部分,您将在其中了解为什么 IBM® 认为企业服务总线(Enterprise Service Bus,ESB)体系结构模式在采用面向服务的体系结构(Service-Oriented Architecture,SOA)时提供了极大的价值。作者 Greg Flurry 和 Rachel Reinitz 将与您分享从有关采用了 ESB 的成功 SOA 客户项目的广泛经验中获得的与 SOA、ESB、SOA 入口点、连接性等相关的见解和最佳实践。此外,通过了解有关实现 ESB 模式的 IBM 系列产品的更多信息,从而了解 IBM 如何致力于推动 ESB:WebSphere® Message Broker、WebSphere Enterprise Service Bus 和 WebSphere DataPower® Integration Appliance XI50。

本系列的 第 1 部分 描述了称为企业服务总线(Enterprise Service Bus,ESB)的体系结构模式如何适应 IBM SOA Foundation,以及 ESB与 Foundation 的其他部分如何相关。

引言

IBM 对 ESB 的立场是——并且一贯是——认为 ESB 作为 SOA 中的一种体系结构模式发挥了根本性的作用。ESB 是实现成功 SOA 采用的重要入口点,并且是任何面向服务的解决方案的关键成功因素。事实上,作为对 SOA 中的 ESB 承诺的一部分,IBM 提供了实现 ESB 模式的三个战略产品

本系列的第 1 部分描述了企业服务总线 (ESB) 体系结构模式如何适应 IBM SOA Foundation,以及 ESB与 Foundation 的其他部分如何相关。

本文介绍以下主题:

  • 设计良好和实现良好的 ESB 能够为面向服务的解决方案提供的价值
  • 一些在设计和实现 ESB 时要遵循的最佳实践
  • IBM 对作为 SOA 组成部分 ESB 的承诺
对 Bobby Woolf 的文章“面向 ESB 的体系结构:一种错误的采用 SOA 的方式”的说明

Bobby 的文章引起了轩然大波。不幸的是,该文让某些读者误认为 IBM 不再看重 ESB 的价值。但是正如本文所述,事实远非如此。过去,Bobby Woolf 曾与一些未遵循本文列出的最佳实践的客户合作过。这些客户设计并实现了 ESB,却没有用于采用 SOA 的路线图或与路线图不一致。所以他们不成功也就毫不奇怪了。幸运的是,这些客户仅代表少数派;大多数客户设计并实现了带路线图的 ESB,并且是在一个或多个 SOA 项目的上下文中设计和实现的,其中 ESB 体系结构和产品选择由跨多个项目(并且通常是跨不同的业务部门)的需求所驱动。

该文不过是在一个路线图的上下文中提出了以下开发 ESB 的最佳实践建议,该路线图定义了将实现所需业务目标的采用计划。下面是摘自该文的一些示例:

  • “基于面向 ESB 的体系结构的项目需要成为基于 SOA 的项目,才能帮助确保成功地提供业务价值”。这与“连接性入口点与任何入口点一样,必须作为交付业务价值的总体 SOA 路线图的一部分进行选择”的断言是一致的。
  • “暗示服务不相关,就是在说使用总线的应用程序不相关,应用程序如何使用总线不相关,而且应用程序集成需求(算不上业务需求)不相关。”这也与“一定不能在真空中部署 ESB,而是要将其作为总体 SOA 路线图的一部分进行部署”的断言是一致的。
  • “ESB 本身不产生任何业务价值。ESB 是达到某个目标的手段,而不是该目标本身”,而且,“面向 ESB 的体系结构天生就有缺陷,因为它构建可能永远没有人希望使用的连接。除非系统彼此连接并协同工作,否则业务并不会带来任何其他价值。”如果企业购买一个 ESB 产品并安装该产品,而不曾预期使用该产品来连接服务,那么该 ESB 产品是否提供了任何价值呢?很可能没有。这是常识。这些陈述再一次强调了“ESB 或任何其他 SOA 采用方法必须成为确定业务价值和如何实现业务价值的总体路线图的一部分”的事实。
  • “作为开发 SOA 的一部分开发 ESB”和“不要单独构建 ESB,而是将其 SOA 的一部分进行构建”等摘录都是有关 SOA 入口点的最佳实践的简略重述。

是否可能误用 ESB,从而无法获得业务价值?是的。同样地,有可能会在 SOA 中误用任何体系结构模式或产品,或存在任何其他未能遵循最佳实践的企图。最后,Bobby 的文章是否与 IBM 将 ESB 定位为 SOA 的基础相抵触?否。事实上,该文只是暗示 SOA 的成功采用源于在 SOA 的上下文中使用 ESB。

我们非常乐意听到您的建议!阅读 Bobby 的文章并让我们了解您的想法

与 SOA 相关的 ESB

IBM SOA Foundation 白皮书描述了 IBM 交付 SOA 价值的整体方法。SOA Foundation 的参考体系结构(图 1 显示了逻辑模型视图)的核心中具有 ESB。该参考体系结构的描述声明“ESB 的存在是简化服务调用任务的基础”。虽然该白皮书是在 2005 年末发布的,但是其中预述的论点却随着时间推移而通过我们在采用 SOA 的客户方面的经验得到加强。

本系列的第 1 部分表明了 ESB 是称为 SOA 的更大体系结构模式中的一个关键体系结构模式。充当中间层的 ESB 提供了服务交互中参与者之间的松散耦合连接,从而提供了 SOA 的中枢。作为中间层,ESB 执行服务虚拟化以协调服务请求程序和服务提供程序之间的差异,并提供面向方面的连接以用作诸如管理和安全性等 SOA 策略的执行点。松散耦合允许解决方案中的组成部分之间彻底分离关注事项(时间上、技术上和组织上的分离),从而同时支持业务流程和 IT 系统的灵活性和敏捷性。

通过 ESB 实现的松散耦合的部分优点(包括本系列的第 1 部分详细描述的服务虚拟化和面向方面的连接中所固有的优点)如下:

  • 请求程序和提供程序不必就消息格式、消息传输甚至目标地址达成一致。
  • 请求消息可由多个提供程序中的任何一个进行处理,请求程序不必显式地确定提供程序。这种路由可以基于相应的版本、服务质量或其他度量。
  • 现有的请求程序无需更改即可连接到新的提供程序。
  • 现有的提供程序无需更改即可对新的请求程序公开。
  • 可以对请求程序做出更改而不影响提供程序,或者对提供程序做出更改而不影响请求程序。
  • 解决方案的横切方面,例如安全性和管理等等,可由 ESB 进行添加、执行或加强。
  • 可以实现新级别的动态行为,因为 ESB 能够为请求程序和提供程序之间的每个交互实时执行策略。

作为 SOA 入口点的 ESB

一次性全面采用 SOA 可能是一项艰巨的任务。IBM 已确定了五个 SOA 入口点,这些入口点提供了有关如何开始渐进地采用 SOA 的指导。渐进的采用方法允许企业以最适合需要的方式和步调采用 SOA。为什么我们要确定五个入口点?简单的原因在于众口难调;企业的在成熟度级别和特定需求方面各不相同,适合于一家企业的入口点可能不适合于另一家企业。这五个入口点基于已导致我们的客户成功实现了 SOA 的方法。存在两种类别的入口点:

  • 以业务为中心的入口点——人员、信息和流程——允许您从一种侧重于基本企业资产的方法开始。
  • 以 IT 为中心的入口点——连接性和重用——允许您为 SOA 奠定技术基础。

您也许已经从SOA Foundation 白皮书中预料到,连接性 意味着使用 ESB 来“通过更加安全、可靠和可伸缩的方法简化 IT 环境,从而在企业内外进行连接”。IBM 认为,虽然 ESB 无疑是一种以 IT 为中心的 SOA 方法,但是“它本身交付了实际业务价值,并且是将来的 SOA 计划的核心构件”。本文中的一个关键问题(将在下面进行讨论)是如何最好地使用 ESB 来形成将来的 SOA 计划的构件,以及如何通过连接性入口点获得最大的业务价值。

存在多种利用连接性入口点的方法。有时客户已经在其环境中定义了一些服务(也许是通过合作伙伴),不过是直接连接的服务;这种情况导致缺乏灵活性并增加管理成本。如上所述,在此类环境中插入 ESB 可以提供直接的松散耦合优点。此外,ESB 的存在为将来定义附加服务、创造附加重用机会、支持新的重用渠道、降低管理成本和获得更多敏捷性的工作创造了条件。

客户通常知道 ESB 的价值并渴望开始从 ESB 中实现好处,但是他们还没有在其环境中定义服务。我们看到了两种已采用过的成功技术,这两种技术帮助在这种情况下从 ESB 获得好处。客户经常混合使用重用和连接性入口点。他们确定需要作为服务来连接的功能或应用程序(请求程序或提供程序)。同时,他们将 ESB 插入该体系结构,以提供新的服务请求程序和提供程序之间所需的松散耦合。混合方法得以流行的一个重要因素是 ESB 产品的转换和变换功能。此类功能允许使用同一个 ESB 产品作为某种形式的适配器,以便以更加可重用的形式公开功能或应用程序,并提供所需的服务虚拟化和面向方面的连接。这里成功的关键是谨慎地开始,公开少量的服务并开发对应的中介,但是这些服务和中介都在为考虑中的整个最终范围而设计的体系结构之内。

有些客户插入 ESB 以建立组织中连接的所需方向,尽管起初还没有确定要连接的服务。在此情况下,ESB 是组织的总体参考体系结构的一部分;参考体系结构 提供了体系结构方向,并强制要求最终将作为解决方案一部分而创建的所有服务(请求程序和提供程序)进行松散耦合连接。ESB 是用于实现该松散耦合的首选机制。采用 ESB 实际上消除了解决方案中的直接连接不知不觉地增长的可能性。这里成功的关键是:

  • 采用一个要求并演示 ESB 使用的参考体系结构。
  • 考虑解决方案的整个最终范围,并支持最佳的 ESB 产品选择。
  • 随着解决方案的发展而实施强有力的治理,以确保利用 ESB 来连接到引入解决方案的新服务(请求程序和提供程序)。




回页首


SOA 入口点最佳实践

存在一组 IBM 强烈建议用于任何 SOA 采用的最佳实践。这些最佳实践的最重要元素是建立一个路线图并渐进地实现该路线图,该路线图定义了实现所需业务目标的采用计划(请参见参考资料部分以获得指向文章“Service Oriented Architecture:An Introduction for Managers”的链接)。该路线图包括两个重要组成部分:

  1. 战略远景,业务或 IT 的方向陈述(包括参考体系结构和治理计划),可用作决策制定、组织参与和标准采用的指导原则。
  2. 一组项目计划,定义实现项目以满足当前业务驱动因素的即时和将来需要。

此类路线图允许您渐进地实现 SOA,以在每个项目步骤中回报业务价值。

您应该在执行该路线图的早期确定您业务的最佳 SOA 入口点。您应该基于从您的总体战略远景和当前 SOA 成熟度级别得出的要求来选择该入口点。该入口点可能是也可能不是连接性入口点;它可能是上述入口点的混合。但是,连接性入口点是最普遍的入口点,因为有如此多的客户具有将请求程序连接到提供程序的即时需要,并希望获得 ESB 提供的松散耦合的好处。IBM 提供了一个在线工具 Business Value Analyzer,以帮助您选择 SOA 入口点。

另一个最佳实践是建立治理框架以确保组织遵循该路线图(请参见参考资料以获得指向文章“SOA Governance and Service Lifecycle Management”的链接)。SOA 所促进的灵活性增强和跨组织性质要求组织建立治理框架,以实现主动的决策制定、准确的跟踪、改进的服务能力和更好的交流。有效的治理通过在增添价值的同时平衡风险和回报,从而帮助实现企业的业务目标。

正如上面所建议的,渐进的 SOA 采用是成功的关键。IBM 建议从试验项目开始,该试验项目:

  • 处理得到充分了解、重要但不关键的业务需要。
  • 实现参考体系结构的某些重要方面(也许是 ESB 和一组示例服务、提供程序、请求程序,这些方面用于演示 SOA 的使用)。
  • 需要一个超出当前能力的可达范围。
  • 积累 SOA 技能。
  • 用作对采用 SOA 治理和新的服务生命周期管理流程所进行的试验。
  • 产生将会投入生产应用并将交付投资回报的结果。

通过 SOA 实现的关注事项分离甚至允许试验项目以能够积累专业经验和验证业务价值但不中断主要操作的方式引入 SOA。





回页首


SOA 连接性入口点最佳实践

除了 SOA 最佳实践以外,还存在其他更特定于 ESB 的最佳实践:

  • 仅当 ESB 在您的路线图中有意义时才采用 ESB。例如,如果 SOA 入口点以业务为中心,您可以推迟通过 ESB 实现的松散耦合,尽管您的参考体系结构中包括了 ESB。
  • 基于您的参考体系结构和一组跨全套项目计划的实际要求来设计 ESB 并选择 ESB 产品。我们说实际 是因为您应该集中于未来几年中的需要;到您超过该时间期限时,产品和需求已经发生了改变。如果仅考虑即时需求,尤其是忽略服务请求程序和提供程序的预期需要,则会导致选择非最优 ESB 产品。您必须明确地在公司的约束内行事,例如年度资金周期和预算,但您同时还希望将短期采购和决策与考虑中的长期(三至五年)目标保持一致。
  • 根据情况考虑 ESB 联合。更大型的异构企业通常作为某种自治域的联合体出现,这些自治域基于各个业务部门或者职能或治理方面。在此类环境中,某些服务可以在单个域中进行共享或重用,而其他服务可以在整个企业中进行共享或重用。在这些情况下,我们建议采用某种形式的 ESB 联合,该形式的 ESB 联合与域联合的需要相匹配。ESB 联合允许在不同的域中使用不同的 ESB 产品,并支持域需求与产品功能之间的最佳匹配。路线图和参考体系结构应该为任何给定域的产品选择提供指导原则甚至选项,以确保实现企业范围的优化。我们进一步建议使用联合服务注册中心和存储库,为企业范围的管理和可重用服务的治理提供帮助。




回页首


您是否需要 ESB 来成功采用 SOA?

前面几个部分说明了从 ESB 开始成功的 SOA 之旅。另外四个入口点不需要 ESB 即可开始该旅程。然而 IBM 认为,无论其入口点是什么,绝大多数成熟的面向服务的解决方案都将包括 ESB,以最大化 SOA 中所需的敏捷性和灵活性。因此,虽然初始项目可以不包括 ESB,但是在您的长期业务和 IT 路线图中,ESB 应该是参考体系结构的一部分,以实现成功的 SOA。如果没有 ESB 提供的敏捷性和灵活性,您会发现在面临不可避免的变更时,管理解决方案将变得非常困难,并且开销很大。

这是否意味着在准备好包括 ESB 在内的所有体系结构组件之前,您还没有拥有真正的 SOA 呢?此问题没有正确或错误的答案,并且可能存在许多选项。在某种程度上,此问题并不重要——重要的是在实现新的 SOA 项目以及解决方案根据您的路线图逐渐变得成熟时,您要渐进地向业务交互越来越多的价值。

我们的客户好像同意这个观点。几乎我们的所有采用 SOA 的客户都从 ESB 开始,或最终在解决方案中使用了 ESB,并从 ESB 支持的灵活性和敏捷性中获得了重大的 IT 和业务价值。





回页首


IBM 的 ESB 产品系列

IBM 对 ESB 的重视及其对 ESB 的承诺体现在我们如何使用产品来履行对 SOA Foundation 的承诺上。IBM 推出了一个产品系列,其中包括三个实现 ESB 体系结构模式的产品:

为什么要推出三个产品?同样是由于众口难调。所有三个产品都实现了 ESB 模式,但是分别强调了使它们适合于特定情况的特定功能。您将在 developerWorks 上找到许多文章和 IBM 红皮书® ,编写这些内容的目的是为了帮助在面向服务的解决方案中使用这些产品。





回页首


结束语

本文再次强调了 IBM 一如既往的信仰,即 ESB 是称为 SOA 的更大模式中的一种基本体系结构模式。您通过阅读本文了解了 ESB 如何帮助从 SOA 获得业务价值,以及 ESB 如何成为成功的 SOA 采用的重要入口点——ESB 模式是如此重要,以致于 IBM 目前在 SOA Foundation 组合中推出了三个实现该模式的战略产品。

分享这篇文章……

digg 提交到 Digg
del.icio.u 发布到 del.icio.u
Slashdot Slashdot 一下!

致谢

作者感谢以下人员对本文提供的帮助:Kyle Brown、Andre Tost、Bobby Woolf 和 Stuart Jones。



参考资料

学习

获得产品和技术
  • 使用 IBM 试用软件开发您的下一个项目,可下载或索取 DVD 光盘。


讨论


作者简介

Author photo

Greg Flurry 是 IBM Enterprise Integration Solutions 小组的一位资深技术主管 (STSM,Senior Technical Staff Member)。他的职责包括与客户协作开发面向服务的解决方案,以及推广 IBM 面向服务的产品。


Rachel Reinitz 是 IBM Software Services for WebSphere 中重点研究 Web 服务的杰出工程师 (Distinguished Engineer)。Rachel 为客户和独立软件供应商 (ISV) 提供咨询,向其讲解如何使用 SOA 和 Web 服务来实现他们的业务以及技术目标。她开发了 IBM 高级 Web 服务培训课程,并且经常出席各种会议。Rachel 同时还是一名 IBM 研究院成员 (IBM Academy Member) 和经验丰富的极限编程指导员,她有 4 年的 XP 实践经验。她居住在美国加利福尼亚州的 Bay Area,喜爱徒步旅行、社交活动以及国际旅行。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

将您的建议发给我们或者通过参加讨论与其他人分享您的想法.







回页首


DataPower、IBM、IBM 徽标和 WebSphere 是 IBM 在美国和/或其他国家/地区的注册商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款