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

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方案。

sca标准值_SOA标准之----SCA架构思想相关推荐

  1. SOA标准之----JBI架构思想

    SOA标准之----JBI架构思想 SOA在Java领域有两套标准:一个是SUN推出的JBI(没有得到BEA和IBM的承认),另外一个是:IBM和BEA等公司推出的SCA和SDO标准. JBI之关注J ...

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

    SOA在Java领域有两套标准:一个是SUN推出的JBI(没有得到BEA和IBM的承认),另外一个是:IBM和BEA等公司推出的SCA和SDO标准. JBI之关注Java组件只处理Java组件的集成. ...

  3. T系统和应用集成-从SOA架构思想到服务架构规划设计

    T系统和应用集成-从SOA架构思想到服务架构规划设计 原创 人月聊IT 2020-09-23 13:48:20 作者:人月神话,新浪博客同名 简介:多年SOA规划建设,私有云PaaS平台架构设计经验, ...

  4. 斗米客户端的架构思想

    2019独角兽企业重金招聘Python工程师标准>>> 背景 随着移动互联网产业的兴起,各式App层出不穷,技术方案多种多样.同样,我们也面临了各式各样的问题,比如产品如何开发能够更 ...

  5. 前端笔记之NodeJS(四)MongoDB数据库Mongoose自制接口MVC架构思想|实战

    一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...

  6. restful适用于移动互联网厂商作为业务_Restful架构思想

    java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...

  7. 一线Java架构师概括互联网公司的标准Java技术架构

    一线Java架构师概括互联网公司的标准Java技术架构 大部分人对于BAT的技术有一种莫名的崇拜感,觉得只有非常牛逼和天才才能做出现在的这些系统,但经过前面两篇博文的分析,我们可以看到其实并没有什么神 ...

  8. vb.net 简单登录界面(三层架构思想)

    上篇博客介绍了面向过程思维设计的vb.net登录界面,这篇文章就简单介绍一下我用三层架构思想实现的vb.net登录功能吧,还请高手多多指点,初次使用三层架构思想,使用难免有错误之处! 1.登录界面主要 ...

  9. 电子书《我的架构思想》小述

    接下来谈谈<我的架构思想>.上一篇是"电子书<程序原本>小述",在这里:http://blog.csdn.net/aimingoo/article/deta ...

最新文章

  1. 修改aconda镜像服务器,Jupyter安装链接aconda的实现方法
  2. 2.3 残差网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. http预请求options
  4. 【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
  5. 禁止存放到内存_暴雨 ! 神木能源局:关于煤炭运输及存放的通告
  6. android boss简历,BOSS简历模板
  7. python浙江大学出版社_大学计算机公共基础课如何改革?浙江高校积极探索以Python课程为主导的教学实践...
  8. 【学习】把自己的电脑创建成ftp服务器,用Cuteftp软件上传文件和下载文件。
  9. 微信公众号提供的服务器地址,微信测试号与公众号能填同一个服务器地址吗?...
  10. Android 视频录制工具类VideoRecordUtil
  11. Redis Cluster 原生搭建(二)meet
  12. vbscript下载文件(使用https绕过无效的证书错误)
  13. 相等和严格相等(==和===)
  14. 红蓝对抗中的钓鱼技术
  15. html5 div布局与table布局
  16. 初识QT(十二)——VS中使用Qt方法详解
  17. redis连接数合理配置_redis如何进行合理配置,这10种配置参数你必须知道
  18. 华为OD机试季度总结,看一看3月都有哪些华为OD机试问题吧
  19. 随州天气预报软件测试,随州天气预报15天
  20. CST仿真同轴馈电的微带天线

热门文章

  1. 大数据下的精准营销模式
  2. android.view.WindowLeaked: Activity has leaked window com.android.internal.p
  3. 跟老男孩学Linux 5 in 1 PDF
  4. 正则匹配所有字符(包括换行)
  5. Nacos出现重大安全漏洞,开源项目险遭脱库
  6. 【呆子谈营销】:从街旁网的倒闭开始谈起
  7. 【民族音乐推荐】(耳机测试 测试耳机 )【试音碟霸】【重低音歌曲】、【重低音音频】、【左右声道】、歌曲推荐、试音、唱片、碟霸、经典民族歌曲推荐、【2022冬奥会中民族音乐】
  8. edge浏览器被百度占用了如何解决?
  9. 【计算机网络】什么是 A、B、C 类地址?什么是子网掩码?
  10. MATLAB2016b遗传算法工具箱安装