SCA 应用程序开发: 第 1 部分:服务组件体系结构概述

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:23:02

文档选项

将此页作为电子邮件发送
级别: 中级
Sreedevi Penugonda (sreedevip@in.ibm.com), 系统软件工程师, IBM Software Group
Rakesh Kumar Dash (rakesdas@in.ibm.com), 系统软件工程师, IBM Software Group
2006 年 12 月 07 日
本 文是介绍服务组件体系结构(Service Component Architecture,SCA)的系列文章的第 1 部分。此部分将概览 SCA,并说明它如何简化使用面向服务的体系结构(Service-Oriented Architecture,SOA)所构建的业务应用程序的设计和集成。本系列的后续文章将讨论 SCA 体系结构及其主要概念,包括服务实现、服务客户机和各种组件的组装。
面向服务的体系结构 (SOA) 是一个框架,用于组合各个业务功能和流程(称为服务),以便实现复杂的业务应用程序和流程。在 SOA 框架中,相对粗粒度的业务组件被作为服务公开。SOA 将 IT 资产构造为一系列可重用的服务,这些服务是松散耦合的,与平台和实现无关。SOA 将解决方案设计为服务的组装,通过定义良好的接口和契约进行连接。
服务组件体系结构 (SCA) 是一个规范,它描述用于使用 SOA 构建应用程序和系统的模型。它可简化使用 SOA 进行的应用程序开发和实现工作。
SCA 可简化使用 SOA 构建的业务应用程序的创建和集成。SCA 提供了构建粗粒度组件的机制,这些粗粒度组件由细粒度组件组装而成。
SCA 将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。
SCA 方法的优势包括:
简化业务组件开发
简化作为服务网络构建的业务解决方案的组装和部署
提高可移植性、可重用性和灵活性
通过屏蔽底层技术变更来保护业务逻辑资产
提高可测试性
SCA 将构建面向服务的应用程序的步骤划分为两个主要部分:
实现提供服务和使用其他服务的组件
组装组件,以通过服务引用其他服务的方式来构建业务应用程序
SCA 提供了一种机制,用于打包和部署那些紧密相关的组件,这些组件是作为一个整体开发和部署的。这种机制使服务的实现和组装避免了陷入基础设施功能的细节,也避免了调用外部系统。这样可支持不同基础设施间的服务可移植性。
服务实现是业务逻辑的具体实现,提供服务和/或使用服务。这些实现会使用众多实现技术中的任意一种,如 Java™、BPEL 或 C++。实现是业务流程的“仆人”。
实现可以提供服务,而服务则是由一个接口定义的一组操作,此接口供其他组件调用。实现也可以调用其他服务,称之为服务引用,服务引用指示了此实现对外界服务的依赖关系。实现还可以具有一个或多个可配置属性。属性是可以从外部配置的数据值,会影响此实现的业务功能。
SCA 服务通常对参数和返回值使用文档样式的业务数据,最好使用服务数据对象(Service Data Object,SDO)表示这些参数(有关更多信息,请参见参考资料部分)。
服务、引用和属性是实现的可配置方面——SCA 将其统称为组件类型。
配置引用是通过将引用绑定到目标服务来完成的,随后实现可以通过调用引用来使用目标服务。属性的配置将涉及到为属性设置具体的数据值。在 SCA 框架中,可以使用一个实现构建多个不同的组件,每个组件具有不同的引用和属性配置。组件及其服务可以被其他本地组件调用,或者用于远程访问。
组装一个组合业务应用程序的过程,在此过程中配置并连接提供服务实现的组件。SCA 组装在两个层次进行:
系统内松散连接的组件的组装
模块内松散连接的组件的组装
SCA 组装模型包括一系列由 XML 元素定义的构件。
SCA 模块 是一起开发和部署到 SCA 系统 的最大紧密耦合组件。它是 SCA 系统内的松散耦合组合的基本单元。SCA 模块包含一系列组件、外部服务、入口点,以及用于衔接这些部分的机制。模块向 SCA 系统提供服务实现。
入口点 定义模块提供的公共服务,此服务可以由同一模块内的其他组件使用,也可以在模块外使用。入口点用于使用特定的绑定 发布模块提供的服务。
模块内的外部服务 表示其他模块提供的远程服务。它们位于使用此服务的 SCA 模块之外。组件可以像访问 SCA 组件提供的任何服务一样访问这些外部服务。外部服务使用绑定来描述对外部服务的访问。
外部服务的接口必须为可远程访问的。
在SCA 系统 中,SCA 系统 用于聚合那些提供了相关业务功能的模块。这是通过配置和管理模块组件、外部服务、入口点,以及连接机制来完成的。SCA 系统的配置由所有部署到其中的子系统的组合加以表示。图 1 是系统组装的一个示例;它说明了如何使用服务和引用连接各个子系统和模块。

让我们逐个分析一下图 1 中所看到的内容:
子系统配置中的模块组件表示 SCA 模块的一个已配置实例,模块组件可以在其中为模块的外部服务设置值,并能够为模块公开的属性设置值。
外部服务是位于使用服务的 SCA 系统外部的远程服务。模块级别的外部服务与系统级别的外部服务的不同之处包括: 名称必须在子系统中定义的所有外部服务中保持唯一性。
子系统中没有与模块组件具有相同名称的外部服务,因为它们都可能成为连接机制的目标。
入口点用于声明可外部访问的子系统服务。它们由其他组装或客户作为 Web 服务使用。模块级别的入口点和系统级别的入口点的不同之处包括:
名称必须在子系统内定义的所有入口点中保持唯一性。子系统内不能存在与模块组件同名的入口点。
引用子元素的指定是可选的,因为可以通过另一个子系统提供的连接机制进行连接。
有一个开放源代码项目提供服务组件体系结构的运行时实现,您可以使用该实现来运行 SCA 应用程序。此项目称为 Tuscany,目前在Apache 中处于孵化期。此项目的主要参与者有IBM、BEA、Oracle、Sybase、SAP、IONA 和Siebel。
在本文中,我们介绍了 SCA 体系结构及其组装模型,并说明了 SCA 子系统及各种组件,包括组成此子系统的模块、连接机制和外部服务。这些细节应该能够帮助您理解使用 SCA 构建和集成不同业务应用程序所需的各个概念。
您可以参阅本文在 developerWorks 全球站点上的英文原文 。
通过SCA 0.9 Assembly Model Specification,可以很好地了解相关背景知识。
您可能还希望了解有关SDO 规范的更多信息。


Sreedevi Penugonda 是 IBM Java 技术中心的一位系统软件工程师。她专长于分布式对象计算系统、数据结构及算法和操作系统


Rakesh Kumar Dash 是 IBM Java 技术中心的一位系统软件工程师。他对 RMI 和 ORB 开发进行了广泛的研究。他所感兴趣的领域包括 SOA、Web 服务、CORBA 和操作系统。
SCA 应用程序开发: 第 1 部分:服务组件体系结构概述 SCA 应用程序开发,第 3 部分: 开发示例 SCA 应用程序 使用 Spring Framework 设计和开发 SCA 组件,第 1 部分: 三剑客:Spring、SCA 和 Apache Tuscany SCA 应用程序开发,第 2 部分: 用于 Java 的 SCA 客户机和实现模型 使用服务组件体系结构构建 SOA 解决方案——第 1 部分 使用服务组件体系结构构建 SOA 解决方案——第 2 部分 使用服务组件体系结构构建 SOA 解决方案——第 3 部分 使用服务组件体系结构构建 SOA 解决方案——第 3 部分 Java Card应用程序体系结构概述 体系结构实践,第 4 部分: 场景 1:实际 SOA 场景中的服务创建选项 开发端到端的 Ajax 应用程序,第 1 部分: 用一个场景设置 Ajax 环境 开发端到端的 Ajax 应用程序,第 1 部分: 用一个场景设置 Ajax 环境 像专业人员一样开发 Ajax 应用程序,第 1 部分: 使用 Prototype Java... 为 WebSphere Application Server Community Edition 开发 Spring 应用程序: 第 1 部分:Spring MVC 迈向面向服务的体系结构和集成的模式语言,第 2 部分: 服务组合 系列标题: 面向服务的体系结构概述 开发端到端的 Ajax 应用程序,第 3 部分: 集成、测试、调试应用程序 myeclipse应用程序开发系列之一:概述 Web 服务内幕,第 2 部分:W3C Web 服务专题研讨会的概述 Web 服务内幕,第 2 部分:W3C Web 服务专题研讨会的概述 OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序 使用开源软件设计、开发和部署协作型 Web 站点,第 1 部分: 简介和概述 开发端到端的 Ajax 应用程序,第 2 部分: 实现 Ajax 客户机和服务器层 SOA 建模: 第 1 部分 服务识别