组件组合的策略与技巧

  • Jean-Jacques Dubray
  • 王锐

2008 年 1 月 11 日

话题:SOA架构

自 20 世纪 90 年代以来,组件技术一直在持续发展。随着 Spring 的出现和依赖注入模式的发展,它们到了一个新的转折点,开始提供先进的组合机制。

前几周,SAP Labs 的标准架构师 Sanjay Patil 发表了一篇名为服务组件体系结构的 IT 场景的文章,描述了一些服务组件体系结构(SCA)提供的组合策略。

上个月,一个 IBM 的团队比较了不同的组件技术,以及各种组件技术对组合的支持程度。这篇文章首先定义了一些促使组合机制的属性:

  • 接口耦合
  • 数据(类型系统和消息格式)
  • 版本弹性(译注:即接口的版本对消费者的影响)
  • 转换独立性
  • 预期的交互模式
  • 会话
  • 仲裁能力
  • 动态性

对 Sanjay 来说,两个最重要的因素是:转换独立性,它导致部署的灵活性;动态性,在 SCA 中可利用策略达到。

IBM 的文章也探讨了影响组件粒度的很多因素,它支持当前行业共识:

一般说来,松散耦合的组件是粗粒度的,而紧耦合的组件更可能是细粒度的。

这篇文章声称:

SCA 在两个坐标轴上提供组合:引用组合与实现组合

  • SCA 组件可以这样组合服务:以一个单一调用编程模型(它独立于服务部署的位置和方式)来编制那些服务的调用模式。
  • SCA 还可以通过实现来提供组合:通过把一组细粒度的组件装配成一个粗粒度组件的实现。

Sanjay 把他们的分析分享出来,他认为:

  • 在一个自底向上的组合场景里,一个应用是通过装配现有的不同实现部件 [而组合在一起的]
  • 在一个异构的组合场景里,……SCA 允许将结构化逻辑以及相关的功能(例如映射等)作为第一级别的组件,这些组件与其它组件的关系将被作为一个定义良好的组合的一部分。

然而,他也描述了另一个场景,一个“自顶向下”的场景:

……采用相反的方式来创建组合 [……] 装配器的目标是分析高层业务需求,并在一些仍需实现的组件的顶层创建组合。

IBM 的文章总结:

SCA 的一个强大之处在于它的整合各种各样的细粒度组件模型的能力,而这些模型过去一般被用来实现粗粒度的服务组件。通过模型化全局解决方案的结构,提供机动性与灵活性,以及无需在实现代码中定义复杂的配置细节,SCA 给它们中的每一个带来价值。SCA 还有一个优点,它能把整个解决方案中不同部分的不同组件模型连接起来。

查看英文原文:Component Composition Strategies and Tactics

SOA架构