使用Spring Framework设计和开发SCA组件,第1部分 - 三剑客2010-12-03 IBM Ramkumar Ramalingam使用Spring Framework设计和开发SCA组件,第1部分 - 三剑客:Spring、SCA和Apache Tuscany在 “使用 Spring Framework 设计和开发 SCA 组件” 系列文章 中,学习如何有效结合服务组件架构(Service Component Architecture,SCA )与 Spring Framework 来创建分布式服务应用程序。第一篇文章将概述 SCA 与 Spring 两者相结合的优势。学习如何使用 Spring Framework 来设计和开发 SCA 组件,如何将 Spring beans 公开为 SCA 服务,以及如何在 Spring 应用 程序中访问 SCA 服务和属性。本文中的示例将使用 Apache Tuscany SCA Java™ 技术运行时。简介在 Open SOA (OSOA) 项目发布标题为 “强大的组合:SCA 、OSGi 和 Spring” 的白皮书之后,这三种技术的结合引起了人们的一些 关注。Spring Dynamic Module 就是这种基础架构的一种商业实现,它结合了 Spring 和 OGSi。Spring beans 可以作为服务组件架构(SCA)的组件实现使用 。Apache Tuscany 的Java 实现建立在 Apache 的OSGi 框架 (Felix) 的基础之 上。在本系列中,学习如何使用 Spring Framework 和 Apache Tuscany SCA Java 运行时来设计和开发 SCA 组件。示例和代码片段将帮助您理解 SCA 与 Spring 两者结合所带来的好处。您还将了解如何结合 SCA 与 Spring 来创 建分布式服务应用程序。本文将介绍使用 Spring 开发 SCA 组件时需要 掌握的一些基本设计原则。您将探索如何将 Spring beans 公开为 SCA 服务, 以及如何在 Spring 应用程序中访问 SCA 服务和属性。第 2 部分将深 入讨论一些高级特性,比如说通过 SCA 处理多种应用程序上下文以及在 Spring beans 中使用 SCA 注释。下载 示例源代码。此示例需要在 Apache Tuscany 运行时中运行,但其侧重 点并不是展示如何开发 SCA 组件。本文将重点讨论如何将 Spring 应用程序作 为 SCA 组件的一种实现技术来使用。程序本文将讨论以下程序。SCA提供了一个编程模型,用于创建基于面向服务架构(Service-Oriented Architecture ,SOA)的应用程序和解决方案。SCA 所依托的理念是将业务功能 作为一系列服务提供,从而创建能满足特定业务需求的解决方案。这些复合集可 以包含为已有系统中的应用程序和业务功能创建的新服务,以及作为复合应用的 一部分重用的应用程序。SCA 提供了:一个用于服务复合以及服务组件创建的模型,包括在 SCA 复合集中重用已有 应用程序。灵活的复合、重用、技术和部署选择,这使它成为了构建异构分布式系统的 理想环境。支持多种实现语言和通信机制。简化的组件编程模型,用于使用各种技术(比如说 Enterprise JavaBeans、 Java POJOs、Spring beans、BPEL Process、COBOL、C++ 和 PHP 等)来实现业 务服务。Spring Framework通常称作 Spring,它是一个尝试通过解决企业应用程序开 发的复杂性来提高 J2EE 环境适用性的开源项目。Spring 的一个优势在于它的 分层架构。它允许您选择所使用的组件,同时为 J2EE 应用程序开发提供了一个 紧密结合的框架。Spring 为简单的Java 对象提供了一个框架,从而使它们能够 通过包装器类和 XML 配置来使用 J2EE 容器。Spring 的目标是,通过提高开发 生产力和运行时性能,让项目从中获得巨大的好处,并改善测试范围和应用程序 质量。人们经常将 Spring 描述为一种轻量级的容器环境,但更加恰当的比喻或 许是 “能简化开发的框架“。Apache Tuscany开源 Apache Tuscany 项目致力 于实现 SCA 规范(和一些其他的SCA 规范,如 Service Data Objects 和 Data Access Service)。依照 Open Service-Oriented Architecture (OSOA) 和针 对全球信息社会 (OASIS SCA Java) 规范的一些标准,Apache Tuscany 为 SCA 运行时提供了一个全面的基础架构。本文中的示例将使用 Apache Tuscany V1.5 ,它是截止本文撰写时的最新版本。要运行示例应用程序,需要 下载 Apache Tuscany SCA Java 实现的二进制发行版。SCA Assembly ModelSCA 的基本工件是组件,它是 SCA 的基本构成单元。组件包含一个经过配置 的实现实例,其中,实现是提供业务功能的程序代码。业务功能将由其他组件作 为服务提供。实现有时需要依赖于其他组件提供的服务。这些依赖关系被称作 引用。实现具有可设置的属性,它们是影响业务功能运转的数据值。组件通过为属 性提供值以及将引用关联到其他组件所提供的服务来配置实现。多个组件可以使 用和配置同一实现,而每个组件可以采用不同的方式来配置实现。SCA 支持:各种实现技术,比如说 Java POJOs、EJBs、Spring beans、BPEL Process、 COBOL 和 C++一些脚本语言,比如说 PHP 和 JavaScript一些声明式语言,比如说 XQuery 和 SQLSCA 在一种被称作复合集(composites) 的集合中描述应用程序的内容和关 联,如图 1 所示。复合集可以包含组件、服务、引用、属性声明以及这些元素 之间的关联描述。复合集可以分组和链接采用不同实现技术构建的组件,从而允 许在各业务任务中采用适当的技术。复合集将部署在 SCA 域中。图 1. SCA 复合图

SCA Assembly Model 包含一系列工件,它们在复合集方面定义了 SCA 域的 配置,其中包括服务组件以及描述组件之间的关联的相关工件。