一、认识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-2 15:31:49
*/
public interface HelloService {
String getHello(String username);
}
HelloServiceImpl.java
package hello;
/**
* 服务实现
*
* @author leizhimin 2009-6-2 15:32:36
*/
public class HelloServiceImpl implements HelloService {
public String getHello(String username) {
return "Hello " + username + "! This is a SCA program!";
}
}
Hello.composite
<!-- SCA的服务组件配置文件 -->
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="Hello">
<component name="HelloServiceComponent">
<implementation.java class="hello.HelloServiceImpl"/>
<property name="username" type="xsd:string" default="World"/>
</component>
</composite>
2、SCA组件的客户端代码
package hello;
/**
* SCA的客户端调用
*
* @author leizhimin 2009-6-2 15:41:41
*/
public class HelloSCAClient {
public static void main(String[] args) {
SCADomain scaDomain = SCADomain.newInstance("Hello.composite");
HelloService helloService =
scaDomain.getService(HelloService.class, "HelloServiceComponent");
String msg = 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是以请求消息和相应消息作为切入点,在集成时将消息和传输协议解耦,形成一种与传输协议无关的标准消息,这样形成一种全新的区别于现有应用服务器的集成容器,是从容器的角度出发,一种全新的容器模型。
分享到:
相关推荐
SOA在Java领域有两套标准:一个是SUN推出的...在此,详细介绍SCA的架构思想。一、认识SCASCA(ServiceComponentArchitecture)中文翻译为“服务组件架构”,是一种全新的软件架构思想。SCA中,最重要的一个概念是Servi
SCA的核心思想是将应用程序拆分成独立的服务组件,并通过标准的接口进行交互。在这个架构中,开发者可以使用多种编程语言来实现服务,而SCA则负责管理和协调这些服务。 在Java环境中,SCA通过引入特定的注解...
光谱聚类是一种基于图论和矩阵分析的聚类方法,其核心思想是将数据点视为图中的节点,通过构建相似度矩阵来表示数据之间的关系。然后,通过对相似度矩阵进行谱分析,得到能够反映数据内在结构的特征向量,最后利用...
SCA的核心思想是将应用程序分解为可重用的服务组件,这些组件可以通过多种通信机制相互通信,如SOAP、RESTful或直接调用。 1. **组件模型**:SCA组件可以是任何类型的代码单元,如Java类、Web服务或EJB。它们封装了...
SCA规范的一个核心思想是将波形软件与硬件平台解耦,使得波形可以灵活地部署在不同的硬件平台上,从而提高软件的可移植性和可重用性。 - **波形软件**:指的是用于实现特定通信功能的应用程序。 - **运行环境**:指...
SCA的基本思想是通过正弦和余弦函数的变化来模拟优化过程中种群的动态行为。算法主要分为两个阶段:探索和开发。探索阶段利用正弦函数的全局特性搜索解空间,而开发阶段则通过余弦函数的局部特性来精细化当前最优解...
通过对《Understanding SCA (Service Component Architecture)》的深入阅读,我们可以了解到SCA不仅是一种技术标准,更是一种面向服务的设计思想。它通过提供一种统一的、灵活的方式来构建服务组件,极大地促进了...
软件无线电(Software Defined Radio, SDR)是一种现代通信技术,其核心思想是将传统的硬件信号处理功能通过软件来实现。这种技术使得通信设备能够灵活适应不同的通信标准和频率,极大地提高了系统的可扩展性和复用...
SCA的核心思想是通过声明式的方式来处理服务的安全性、事务管理和可靠消息传递等特性,使得这些功能的配置更加直观和简洁。 SCA不仅限于Java,它允许使用任何编程语言来编写服务组件,同时支持如BPEL(Business ...
SCA的核心思想是将业务逻辑封装为可复用的服务组件,通过配置来实现组件间的组装和交互,从而促进服务的灵活组合和解耦。 在SCA中,组件(Component)是基本的构建块,它包含了业务逻辑的实现。组件可以使用任何SCA...
本课程主要针对主流的SOA核心思想、融合WebService、JAX-WS、SCA、 Tuscany及开源产品技术CXF完成了从思想到技术,从技术到项目的课程体系.本课程主要是针对复杂的SOA 思想,通过项目开发的形式融会贯通给学员进行...
SCA(软件通信体系结构)规范是美军联合战术无线电系统(JTRS)计划中用以实现电台硬件模块化、软件可移植、可重用和可互操作性的关键技术体系。FPGA(现场可编程门阵列)作为可编程硬件,由于其在高速数字信号处理...
服务组件体系结构 (SCA) 基于面向服务体系结构 (SOA) 的思想描述服务之间的组合和协作。题目给出了几个关于 SCA 的描述,其中不正确的是“SCA加强组件的接口与传输协议的关联,提高组件的内聚性”(选项B)。实际上...
实施过程详细阐述了如何基于改进的SCA架构进行开发。首先,定义服务组件及其接口,然后利用OSGi进行组件打包和部署。接着,实现服务注册和发现机制,确保组件间能正确通信。最后,通过测试验证系统的功能和性能,...
软件通信体系结构(SCA)是一种面向对象的通信体系结构,它采用通用处理器加上专用处理器(如FPGA)的方式构建硬件架构,并使用软件框架对硬件进行抽象和管理。SCA的设计目标在于提供一个标准化、模块化的框架,使得...
在FPGA软件架构设计中,借鉴了SCA的硬件抽象层规范和专用硬件处理器(SHP)组件的可移植性设计建议,采取开放式体系结构和模块化设计思想,研究设计适用于FPGA工程实现的架构模型。 FPGA是一种具备高速信号处理优势...
总的来说,SOA是一种以服务为中心的架构思想,旨在提高系统的灵活性、可扩展性和可维护性,通过松耦合的服务和标准化的接口,降低了系统集成的复杂性,促进了不同系统间的协作和数据交换。JBI和SCA等技术则是SOA理念...
SOA在Java领域有两套标准:一个是SUN推出的...在此,详细介绍JBI的架构思想。一、认识JBIJBI(JavaBusinessIntegration)中文翻译为“Java业务集成”,是SUN发布的一个用于Java组件进行集成的一个标准。JBI的本质是一