SOA 中的数据服务:问题和可能的解决方案

  • Jean-Jacques Dubray
  • 孙向晖

2007 年 11 月 14 日

话题:SOAREST架构

在面向服务的架构中,不论其是用作何种目的的,如:主数据管理 (Master Data Management,MDM)、客户数据集成(Customer Data Integration,CDI) 或者作为核心的 SalesForce.com 的 API(core SalesForce.com API),数据服务正在日益引起大家的关注。

WSO2 在刚刚过去的夏季发布了作为它们的 Web 服务应用服务器(Web Services Application Server,WSAS)组成部分的一个数据服务框架,以便让从 SQL 数据库创建数据服务的过程变得更加容易些。

上周,David Webber写了一篇关于 OASIS 内容装配机制(Content Assembly Mechanism,CAM)规范及其相关联的数据服务的专栏文章 。正当大多数人放弃定义用于验证查询结果的 XML Schema 定义的时候,CAM 为基于 XML 的交易的数据服务验证提供了定义模板。Dave 补充说:

虽然现有使用 W3C XSD shecma、命名空间、XSLT 和其他工具(如 Schematron and XMLBeans 等)的技术已经存在了有些时日了,但它们提供更多的是以开发人员为中心的并且可能比较脆弱的设计选项。敏捷信息接口需要对业务上下文环境标准作出反应,而传统的 Schema 机制对此不能提供必需的帮助。

CAM 可以在不使用 XML Schema 的情况下定义消息结构。CAM 平台还有一个附加的特性,就是它提供一种可促进服务版本化和重用的机制。Dave 解释说:

通过学习口碑不错且运行超过 3 年的AWS 平台我们可以增长很多的见识……Amazon 正在持续不断的改造其内容模型,而且这样做的一个结果是它们支持版本化的请求响应已经若干年了……Amazon 使用一种自助版本方法:在这种方法中,请求的版本标识被包含到请求本身的语法中。

在 Amazon 销售的广泛的产品中混杂着问题:

每种产品类型拥有不同的信息模型(被广泛地显示在图中)。一个指定产品代码范围的查询将返回一个由不同部分组成的 XML 块。这些结构的一些细微差别大量体现在不同结构块中的 XML 元素标记和不同的关联元素中。不仅如此,每种商品项目(Item)拥有如单价、库存级别和除了 Amazon.com 本身之外的下游供应商的新的和可用的商品项目,以及那些供应商的评级(rank)。

Dave 的主题文章重点对 Amazon 服务 的上下文驱动程序(context drivers for Amazon services )进行了分析,并总结说:

毫无疑问,当你查找 W3C schema 和命名空间机制时,你会发现上面的这些上下文相关的行为都没有被支持。你能够看到只是可能出现的整体结构的总体布局。

Dave 继而描述了 CAM,它使用一系列的 XPath 语句来描述灵活且上下文依赖的文档结构。CAM 共享了 UN/CEFACT(核心组件技术规范,Core Component Technical Specification)的核心要素,但跟 CCTS 不同的是,CAM 如今具有可操作性。jCAM(CAM 的 java 开源实现 )针对与 SOA 相关联的典型交互提供了 3 种不同的部署模式,包括 Web 服务、B2B 和独立的本地模式(standalone local modes)。其Eclipse编辑器启用了使用了 CAM 模板的本地独立部署以支持 SOA 实现。

查看英文原文:Data Services in SOA: Issues and Possible Solutions SOA

SOAREST架构