InfoQ

新闻

组件组合的策略与技巧

作者 Jean-Jacques Dubray译者 王锐 发布于 2008年1月11日 下午8时1分

社区
Architecture,
SOA
主题
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

没有回复

回复

独家内容

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。

揭示常见的重构误区

相对于Java,.NET在持续重构方面所给与的重视仍然少为人知,大多数人对于重构是否真正属于开发过程,以及如何将其应用到开发过程中持观望态度。Danijel Arsenovski试图为你揭示这些谜题。