`

SCA简介

    博客分类:
  • SOA
 
阅读更多
SOA在Java领域有两套标准:一个是SUN推出的JBI(没有得到BEA和IBM的承认),另外一个是:IBM和BEA等公司推出的SCA和SDO标准。
JBI之关注Java组件只处理Java组件的集成。
SCA实现了业务组件和传输协议的分离,可以处理各种平台组件的集成。
SDO可以的自由读取各种不同数据源的数据。
另外,BPEL本质上是一种集成Web Service服务的语言,也可以算作为SOA的一部分。
在此,详细介绍SCA的架构思想。
一、认识SCA
SCA(Service Component Architecture)中文翻译为“服务组件架构”,是一种全新的软件架构思想。
SCA中,最重要的一个概念是Service----服务,它的内涵式独立于具体的技术。因此,SCA不会称之为 Java组件架构,或Web Service 组件架构。所谓的具体技术,主要有两层含义:一是程序语言,而是传输协议。
现有的组件是和传输协议紧密耦合的。比如EJB组件采用的是RMI传输协议,Web Service组件采用的是SOAP传输协议。SCA组件则能自由地绑定各种传输协议。
SCA是对目前组件编程的进一步升华,其目标是让服务组件能自由绑定各种传输协议,集成其他的组建与服务。
SCA与传统的业务组件最大区别在于SCA实现了两个功能:一是组件和传输协议的分离,二是接口和实现语言的分离。
SCA的本质是一种软件架构思想,SCA架构是独立于程序语言的SOA架构。
SCA的目标是创建一个可集成服务组件的运行环境。
我什么需要SCA?答案:集成的需要。
先看没有使用SOA技术的系统的集成的情况,需要相互约定和暴露接口。需要编写集成的客户端调用代码。调用方和被调用方要“知彼知己”才能很好的集成,而这又都带来高昂的代价和复杂度。
使用SCA的好处:组件之间处于一种松耦合的状态,不需要在自己的代码中加入对方组件的接口代码。
二、认识SCA容器
SCA是一种思想,SCA思想的具体实现是SCA标准和SCA的容器环境。
SOA容器也分JBI容器、SCA容器等。SCA容器也是SOA容器总称的一种,通常都单独称SCA容器,而直接泛称SOA容器。这里为了区别与别的SOA容器开来,而称之为SCA容器。
SCA容器实现了将复杂的服务组件集成过程隐藏在容器内部,开发者之需要按照SCA的标准去开发和集成服务,最终部署到SCA的容器里面即可。
SCA容器的实现很复杂,有关其容器的组成与架构也是一种商业秘密。开发人员只需要关系如何遵循SCA标准去开发和集成服务组件即可。
为了更好去实现SCA架构,理解SCA服务组件概念的内涵和外延对开发者来说是非常重要的。
为了更清晰的认识SCA的概念和原理,下面先给出一个简单的SCA例子,以获得对SCA有个感性的认识。
三、SCA实现的Hello World组件实例
完整SCA组件Hello World实例包含两部分内容:
1、SCA组件的服务端代码
服务端代码包括三个部分:
服务接口,一个Java的Interface----HelloService.java。
服务实现,HelloService接口的实现类----HelloServiceImpl.java。
SCA的服务组件配置文件:Hello.composite。

HelloService.java

/**
*
服务接口
*
*@author leizhimin 2009-6-215:31:49
*/

publicinterfaceHelloService{
StringgetHello(String username);
}

HelloServiceImpl.java

packagehello;

/**
*
服务实现
*
*@author leizhimin 2009-6-215:32:36
*/

publicclassHelloServiceImplimplementsHelloService{
publicStringgetHello(String username) {
return"Hello"+username +"!This is a SCA program!";
}
}


Hello.composite

<!--SCA的服务组件配置文件-->
<compositexmlns="http://www.osoa.org/xmlns/sca/1.0"name="Hello">
<componentname="HelloServiceComponent">
<implementation.javaclass="hello.HelloServiceImpl"/>
<propertyname="username"type="xsd:string"default="World"/>
</component>
</composite>


2SCA组件的客户端代码

packagehello;

/**
*SCA
的客户端调用
*
*@author leizhimin 2009-6-2 15:41:41
*/

publicclassHelloSCAClient{
publicstaticvoidmain(String[]args) {
SCADomainscaDomain =SCADomain.newInstance(
"Hello.composite");
HelloServicehelloService=
scaDomain.getService(HelloService.
class,"HelloServiceComponent");
Stringmsg =helloService.getHello(
"vcom");
System.out.println(msg);
scaDomain.close();
}
}

从客户端的调用代码来看,客户端需要知道服务端组件提供了什么服务,实现了什么纯Java接口。而不需要接口后面的实现细节。
从上面的开发过程可以看到,开发SCA组件,客户端和服务端都不需要知道技术细节。
客户端调用其他组件的时候,只通过一个简单的SCADomain实例,直接获取服务的实现实例就可以调用,而负责的调用和实现都交给了SCA运行环境。
通过上面的组建实例,也可以看出:服务组件是SCA架构的基本单元,SCA是以服务组件为基本单元来进行集成的。下面将介绍各种服务组件的概念。
四、服务组件
1、概念
服务组件准确讲没有确切的概念,它更贴近于一件实实在在的物品,只能从他的形状、组成、结构、功能、状态、属性等侧面来描述它。
服务组件是SCA里面最基本的功能单元,它主要包括接口、实现、引用、属性等部分。可以从一下侧面来描述服务组件。
a)、是在一个模块(Composit)内的通过配置生成的一个实现的实例。
b)、多个组件可以用同一个实现(思考:一个Java的对象可以同时实现多个接口)。
c)、提供服务和消费服务(组件可以调用别的组件的服务)。
d)、通过配置来实现对象的属性值(配置节点为property)。
e)、组件通过连线(Wire)来设置服务引用。连线可以连接到别的组件的服务,也可以连接到模块的引用(模块的概念后面会详细讲述)。
2、服务组件的组成部分
服务组件的组成包含四个部分:服务、组件实现、引用、创建属性。
下面给出服务组件的结构图如下:

如上图,分别讲述服务组成的各个部分:
a)、服务(Service),用来让其他组件调用。是一个接口。如果是基于Java的SCA,它就是Java的接口;也可以是WSDL的ProtType接口,目前只有这两种形式。
b)、组件实现(Implementation),实现所创建的服务,对Java来说,就是接口的实现类。
c)、引用(Reference),一个组件可能需要调用其他组件,需要创建于igeqita组件的引用。对Java来说,就是其他组件的Java接口。
d)、属性(Property),对组件实现的一种属性参数注入。
对一个服务组件来说,服务和实现时必须的,引用和属性是非必需的。例如,对上面Hello World的例子来说,组件的结构图如下

五、服务模块

SCA是通过模块(Composite)将SCA组件集成在一起的。

SCA的模块是实际上是将SCA组件(做为零件)重新组合集成度更高的组建,从整体看来SCA模块和SCA组件的结构式一致的。从构成组件的“零件”角度看,SCA模块是用了组件作为零部件重新组装为新的组件(模块)。

其实道理也非常简单,下面是SCA模块的基本原理图:



如上图,可以看到,模块从整体上也是个组件。

模块是通过SCA的配置文件配置组装形成的,不需要程序的硬编码。

提升(Promote):就是将组件的接口、属性、或引用装配为模块的对应的接口、属性或引用。

连线(Wire):就是在模块内部,组件之间的调用关系。比如组件A的实现调用了组件B,那么组件AB间就存在一个连线。

当组件之间需要调用的时候,由于目前组件(如EJB、WS、JMS)传输协议的多样化,这样在相互的调用的时候,需要将绑定不同的协议去调用。这里尽可能避免让人迷惑而又没有价值的绑定(Binding)一词的概念。

六、服务子系统

在一个大的项目里面,可能会有很多服务模块,多个服务模块之间如果需要相互调用,那么就可以将多个服务模块通过WS或者JMS等技术绑定在一起,形成服务子系统。

理解了模块的概念,就不难理解服务子系统了。

七、SCA与JBI的异同

1、相同点

目的是一样的:都是为了集成。

大致方向一样:都是为了将服务和传输协议解耦。

2、 不同点

SCA以接口作为切入点,从组件接口层将传输协议和接口实现解耦,是从编程的角度出发,一种全新的编程模型。

JBI是以请求消息和相应消息作为切入点,在集成时将消息和传输协议解耦,形成一种与传输协议无关的标准消息,这样形成一种全新的区别于现有应用服务器的集成容器,是从容器的角度出发,一种全新的容器模型。

个人观点:

JBI是SUN公司自己的标准,没有得到IBM、Oracle等公司的承认。目前也没有得到商业容器开发商的支持,前景不看好,目前这方面的资料和文档也相当少。个人建议JBI应用方案应该慎用,如果使用SOA,尽可能使用比较成熟的SCA方案。


分享到:
评论

相关推荐

    SCA介绍

    SCA(Service Component Architecture,服务组件架构)是一种用于构建企业级服务导向架构(SOA)的应用程序框架。它提供了一种标准化的方式来创建、组合和管理跨不同技术的软件组件。SCA的核心目标是促进组件之间的...

    soa sca服务构件架构spring构件实现方案

    #### 二、SOA与SCA简介 **SOA**是一种设计模式,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作...

    Understanding SCA (Service Component Architecture)

    #### 二、SCA简介 服务组件架构(SCA)是一种开放标准,它定义了一种用于构建服务导向架构(SOA)应用的编程模型。SCA的目标是使开发者能够更加关注业务逻辑而非底层技术细节,从而提高开发效率和应用程序的可维护...

    SCA_OASIS_Tutorial

    #### 一、SCA简介与背景 **SCA(Service Component Architecture)** 是一种用于构建基于服务导向架构(SOA)的业务系统的模型。该模型强调组件化和服务化的理念,旨在通过组合新旧服务组件来实现业务系统的创建和...

    Fortify SCA优势.pdf

    #### 一、Fortify SCA简介 Fortify SCA是一款由Fortify Software公司开发的专业级软件源代码安全测试工具。该工具采用静态分析技术,通过对应用程序源代码进行深入分析,识别并报告潜在的安全漏洞。Fortify SCA支持...

    基于SCA的SOA架构研究与应用

    **SCA简介** SCA是由OASIS组织定义的标准,它定义了服务组件的模型、接口以及它们之间的关系。SCA的核心组件包括服务、模块、复合应用和服务组装模型。服务是业务功能的基本单元,模块是一组相关的服务,而复合应用...

    Tuscany SCA in Action

    ### 服务组件架构(SCA)简介 SCA定义了一种标准化的方式,用于描述和组合服务组件,从而创建复杂的应用程序。它支持多种编程模型和传输协议,使得组件可以在不同的技术栈之间无缝通信。SCA的核心概念包括组件、...

    JAVA构件实现规范.pdf

    #### 1.1 SCA简介 SCA,即服务构件架构,是由多个业界领先的软件公司联合制定的一套规范,旨在为构建服务导向架构提供一个统一的标准。它提供了一种独立于具体技术的模型,允许开发者以声明式的方式定义服务的接口、...

    Tuscany in Action

    **Tuscany与SCA简介** - **Tuscany**:这是一个开源项目,旨在提供一个全面的实现SCA规范的平台。 - **SCA**:这是一种规范,用于定义和实现松耦合的服务组件,这些组件可以跨多种编程语言和技术栈进行交互。 ###...

    Tuscany In Action书

    #### Tuscany SCA简介 Tuscany SCA是Apache软件基金会下的一个项目,专注于构建可移植、可互操作的服务组件。它基于Service Component Architecture(SCA)规范,提供了一种统一的方式来定义和组合服务,使开发者...

    思多普(SDAP-Asca)精准代码分析及修复工具简介 - 教学版.pdf

    思多普(SDAP-Asca)精准代码分析及修复工具正是为满足上述需求而设计的一款专业工具,其教学版为高等普通院校和职业院校的计算机课程提供了强大的支持。SDAP-Asca的核心功能是辅助教师和学生完成源代码静态分析的...

    SCA规范4.0

    #### 一、SCA规范4.0简介 **SCA规范4.0**(Software Communications Architecture Specification 4.0 User's Guide)是一份重要的技术文档,旨在定义软件通信架构的标准,特别适用于军事及战术通信系统的开发与集成...

    SCA_JAVA构件实现规范_中文版

    #### 二、SCA服务构件架构简介 SCA作为一种跨平台的服务构件模型,旨在提供一种统一的方式来进行服务的定义、组装和部署。它不仅支持多种编程语言和运行时环境,而且还能够灵活地集成现有的服务。SCA的核心目标是...

    fortify的调研资料

    文件清单为 fortify简单调研.docx 调研时候写的调研报告,对fortify有比较全面的介绍 Fortify_官方内部资料.pdf 一个对...Fortify SCA简介.pdf Fortify SCA优势.pdf Fortify_RTA_简介.pdf Fortify_PTA_简介.pdf

    开源SCA项目调研.pdf

    #### 四、OpenSCA-cli简介 **OpenSCA-cli** 是另一个开源的SCA(Software Composition Analysis)工具,用于扫描项目依赖中的已知漏洞。尽管给定的部分内容中没有详细介绍OpenSCA-cli,但从其命名和功能来看,它很...

Global site tag (gtag.js) - Google Analytics