SOA标准之----SCA架构思想

简介:
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-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是以请求消息和相应消息作为切入点,在集成时将消息和传输协议解耦,形成一种与传输协议无关的标准消息,这样形成一种全新的区别于现有应用服务器的集成容器,是从容器的角度出发,一种全新的容器模型。
 
个人观点:
JBI是SUN公司自己的标准,没有得到IBM、Oracle等公司的承认。目前也没有得到商业容器开发商的支持,前景不看好,目前这方面的资料和文档也相当少。个人建议JBI应用方案应该慎用,如果使用SOA,尽可能使用比较成熟的SCA方案。
 


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/163782,如需转载请自行联系原作者
相关文章
|
缓存 监控 数据格式
信息系统架构模型(2) SOA
信息系统架构模型(2) SOA
364 0
|
11月前
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
439 6
|
边缘计算 Cloud Native
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
SOA架构,即面向服务的架构,它将系统中的所有功能都拆分为一个个独立的服务单元。这些服务通过相互间的沟通与配合,共同完成了整体业务逻辑的运作。在SOA架构中有几个核心概念:服务提供者、服务使用者、服务注册中心、服务规范、服务合同,这些概念清晰地阐述了服务应如何被提
558 6
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
1321 0
|
消息中间件 安全 NoSQL
「架构」SOA(面向服务的架构)
**SOA**是构建灵活企业IT系统的架构模式,基于服务组件进行设计。它强调服务的自包含、模块化,通过服务识别、抽象、组合和交互实现业务流程。特点包括松耦合、重用性、互操作性和标准化。优点是灵活性、可维护性、可扩展性和成本效益,但也有复杂性、性能和治理问题。设计策略涉及业务能力识别、服务契约定义和服务目录建立。技术栈涵盖Java EE、.NET、SOAP、REST、服务治理工具和各种数据库、消息队列及安全标准。SOA旨在适应变化,但也需妥善管理和规划。
890 0
|
边缘计算 Cloud Native IDE
“论SOA在企业集成架构设计中的应用”写作框架,系统架构设计师
企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现资源共享和系统之间的互操作性,并支持快速地将新的应用以服务的形式加入到已有的集成环境中,增强企业IT环境的灵活性。
487 0
|
消息中间件 Kubernetes 供应链
软件体系结构 - 架构风格(14)SOA架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(14)SOA架构风格
623 0
|
前端开发 Java 应用服务中间件
单体架构、垂直应用架构、分布式、SOA、微服务之间有什么关系和区别
单体架构、垂直应用架构、分布式、SOA、微服务之间有什么关系和区别
601 5
|
Dubbo Java 应用服务中间件
09分布式电商项目 - SOA架构演变
09分布式电商项目 - SOA架构演变
237 0

热门文章

最新文章