Open Group 发布新技术标准——SOA 本体

  • Boris Lublinsky
  • 马国耀

2010 年 12 月 19 日

话题:SOA语言 & 开发架构

为了通过 SOA 架起业务与 IT 之间沟通的桥梁,Open Group发布了一项新技术标准——SOA 本体——旨在更好地定义 SOA 的相关概念、术语与语义。该标准

……从业务和技术层面定义了 SOA 的相关概念、术语和语义,目标是:
  • 为特定领域的进一步工作建立基础
  • 在业务和技术人员之间架设沟通的桥梁
  • 加强业务和技术社区对 SOA 概念的理解
  • 提供一种清晰且准确地描述问题和机会的方式,以促进相互之间的理解。

本体的两个核心概念是系统元素,其中:

元素是特定的抽象级别上不可拆分的不透明实体。元素有着清晰定义的边界。

系统是由其他事物构成的有组织的集合。系统中的具体事物就是元素的实例,实例为系统所用。

两个概念都是通用的,它们可用于描述任意的实现方式,也可描述通用概念,系统包含元素,系统又能以层级的形式组合(由系统组成的系统)。域和域之间的差别在于其中所包含的系统和元素的具体含义的不同。

本体的另一核心概念是服务。它是 SOA 的基础,并且一直用于 SOA 系统的描述与实现的实践当中。

服务是对具有特定产出的可重复活动的逻辑描述。它是自包含的,对使用者而言它是一个“黑盒子”。

在定义服务时本体省略了通用的术语“业务”,标准中有这样一段描述:

……业务的概念因不同的视角而异——例如,在某人看来是 IT 概念,在另一人眼中却是业务(IT 的业务)。本体中定义的服务与传统意概念上的业务域或 IT 域是不相干的。

尽管在本体中服务是作为元素的子类而定义的,但是它也提到,上层类别(如系统)的实例提供的能力也可视为服务。

在本体中,与服务相关的其他上层结构有服务契约(serviceContract)、服务接口(serviceInterface)和信息类型(informationType)。

服务契约定义了交互参与者(服务提供者与服务消费者)必须(直接或间接)达成一致的术语、条件和交互规则。在交互过程中,服务契约与所有参与者进行绑定,包括服务本身和为特定的交互活动提供服务的元素。

它描述了正确使用服务所需的具体协议。它可能来自准确描述的服务功能需求,也可能产生于希望规范服务使用的愿望。

服务接口定义了其他元素与服务交互和交换信息的方式。

良好定义的服务接口使得与服务的交互非常简单,能使其他元素有条理地使用服务。服务接口告知其他元素如何向服务发送信息或从服务获取信息。 与服务之间的特殊信息交换是通过信息类型(informationType)而定义的。

SOA 的一个主要优势是服务的可组合性。SOA 的该属性由两个本体概念定义——组合和服务组合(serviceComposition)。

组合的定义是——为实现特定目标而将一组事物装配起来。SOA 本体将组合定义为系统的子类,所以,它强调:组合是一个系统,而系统不一定是组合。它还进一步区分了几种组合模式,譬如适配组合模式(Orchestration Composition Pattern)、编排组合模式(Choreography Composition Pattern)和协作组合模式(Collaboration Composition Pattern)。

下面是组合的特例:

……服务组合(serviceComposition),即将一组服务装配起来从而形成一个新的、粗粒度更大的服务。

最后,本体将事件也加入到 SOA 概念的基础范畴。

事件、发出事件或响应事件的元素,它们任何事件系统的重要内容。事实上,SOA 系统经常需要发出(并接收)事件。

标准的发布引起了 SOA 实施者的极大兴趣。Dana Gardner 认为:

SOA 本体技术标准整合了不同的架构、工程、业务和市场域,为业务和技术人员提供了探讨问题和机会的通用术语及概念映射。它提供的一致框架可随着 SOA 项目的发展而重复使用,它还为特定领域的深入实践提供了基础。

Heather Kreger 说

[本体] 使得关键 SOA 概念易于阅读和理解,更重要的是,它提供了一组企业内 / 间一致认可的定义和关键概念的认识。任何架构师,若要与(企业内,或与企业外的厂商,供应商的)IT、业务、市场人员有效沟通,“使用同一语言交流”是其中关键。

当前枝繁叶茂的 SOA 术语有害于 SOA。该项 Open Group 的新标准试图将它们汇拢并有效地组织起来,从而建立一套通用的 SOA 语言。通用语言有助于人们问出正确的问题、清晰无误地解读问题的答案。


查看英文原文:The Open Group Releases a New Technical Standard - SOA Ontology

SOA语言 & 开发架构