`

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介绍,SOA的基础知识

    fortify的调研资料

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

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

    软件测试作为高等普通院校和职业院校的一门计算机课程,在计算机人才培养方面有着重要作用。...SDAP-Asca就是辅助白盒测试中源代码静态分析的实验工具,学生通过SDAP-Asca平台可完成源代码静态分析各项试验任务。

    使用服务组件架构(SCA)从不同技术调用组件

    本文内容包括:简介基本SCA概念场景Tuscany调用架构概述结束语下载参考资料服务组件架构(SCA)是一项可以抽象底层计算机服务的新技术,这样,系统就可以更加灵活地合并由不同技术实现的子系统。SCA将业务逻辑中有关...

    用Python写网络爬虫_爬虫_

    本书讲解 了 如何使用P川lOil来编写 网络爬虫程序 , 内 容包括 网络爬虫简介 , 从页面 中 抓取数据 的三种方法 , 提取缓存 中 的 数据 , 使用 多 个线程和进程来进行并发抓取 , 如何抓取动态页面 中 的 内 容 ...

    构建简单的C++服务组件,第1部分:服务组件体系结构C++API简介

    此项目的目标之一是获得实现以下服务组件体系结构(ServiceComponentArchitecture,SCA)规范的C++运行时(有关更多信息,请参见参考资料):SCA组装模型(SCAAssemblyModel)SCAC++客户机和实现(SCAC++...

    借助RationalSoftwareArchitect实现模型驱动的服务开发

    案例简介3.创建UML模型4UML到JavaBean转换5UML到XSD转换6服务开发7.测试服务8.总结参考资料本文向您展示怎样使用RationalSoftwareArchitectV7.5的UML-to-JPA及UML-to-XSD转换工具,并结合...

    美容网站

    商机页面:sca.asp 新闻页面:news.asp 5,企业各内容调用变量: id'企业ID cologo'企业LOGO变量 copic'企业形象图片 covip'VIP会员标志 coname'企业名称 cointroduce'企业简介 cocpsort'产品分类 coinfo'企业扩展...

    pythonidaer

    欢迎! 我叫乔纳森。 ♜♞♝♚♛♝♞♜ :chess_pawn: :chess_pawn: :chess_pawn: :chess_pawn: :chess_pawn: :chess_pawn: :chess_pawn: :chess_pawn: 我是参加全栈开发新手训练营的前端开发人员。... :balance_sca

    PHP5 完整官方 中文教程

    SCA — SCA Functions SDO — SDO Functions SDO DAS XML — SDO XML Data Access Service Functions SDO-DAS-Relational — SDO Relational Data Access Service Functions Semaphore — Semaphore, Shared Memory ...

    PHP5中文参考手册

    SCA — SCA Functions SDO — SDO Functions SDO DAS XML — SDO XML Data Access Service Functions SDO-DAS-Relational — SDO Relational Data Access Service Functions Semaphore — Semaphore, Shared Memory ...

    PHP官方手册中文版

    SCA Functions CXLIII. SDO Functions CXLIV. SDO XML Data Access Service Functions CXLV. SDO Relational Data Access Service Functions CXLVI. Semaphore, Shared Memory and IPC Functions CXLVII. ...

    PHP手册2007整合中文版

    SCA Functions CXLIII. SDO Functions CXLIV. SDO XML Data Access Service Functions CXLV. SDO Relational Data Access Service Functions CXLVI. Semaphore, Shared Memory and IPC Functions CXLVII. SESAM ...

    Java通用注解和API规范

    1.1. 简介 ........................................................................................................................................................................... 7  1.2. 实现的元...

    阿拉丁商贸通网站源码(完整版本)

    SMT_Sca_View(ListCount,PagesCount,ErectCount,WordCount,One_ID, &lt;p&gt;Two_ID,ScaSort,User_ID,ScaSortView,ScaKey,ScaExplain, &lt;p&gt;PagesView,ByDesc,ViewDate,ViewHtc,ViewDH,PageName) 'ListCount条数0为不限制 '...

Global site tag (gtag.js) - Google Analytics