SOA学习笔记三:SCA分析

来源:互联网 发布:bpm测试软件ios 编辑:程序博客网 时间:2024/05/22 17:24

SCA的起源 

基于组件的编程一直是软件业简化编程和提高效率和质量的一个重要方法,但是往往对于不同语言我们有不同的组件模型,从而需要不同的调用方式。比如在J2EE技术领域,我们就有EJB,POJO,JDBC,JMS等,这对于开发人员来说是一个极大的挑战。为了给这些不同的接口提供一个统一的调用方式,IBM提出了WSIF (Web Service Invocation Framework,具体请参考http://ws.apache.org/wsif/ ),并将它贡献给Apache组织。WSIF作为Web Service领域的一个规范,提供了一种基于Java API统一调用各种服务的能力。但是WSIF没有形成一个基于组件的架构模型,因此IBM在此基础上推出了一个面向服务的组件模型(Service Oritented Architecture, SCA)。这个模型不但解决了统一调用的问题,还提出了一个基于组件的构建模型,并提供了许多面向企业计算的QoS能力。因此,从技术的角度来说,SCA是WSIF的延续和扩展。SCA的目的是使用户在构建企业应用时有一个不再直接面对具体的技术细节的层次,而是通过服务组件的方式来构建应用。

SCA的基本概念

 

服务组件模型(SCA)中提出了一些新的概念,比如服务组件,模块,共享库,导入和导出等。

服务组件

服务组件是SCA中的基本组成元素和基本构建单位,也是我们具体实现业务逻辑的地方。我们可以把它看成是构建我们应用的积木。我们可以非常容易地把传统的POJO,无状态会话BEAN等包装成SCA中的服务组件。 SCA服务组件的主要接口规范是基于WSDL(Web Service Description Language)的,另外为了给Java编程人员提供一个比较直接的接口,SCA的部分服务组件也提供了Java接口。因此,使用服务组件的客户端可以选择使用WSDL接口或Java接口。

SCA服务组件与传统组件的主要区别在于:

1. 服务组件往往是粗粒度的,而传统组件以细粒度居多。

2. 服务组件的接口是标准的,主要是WSDL接口,而传统组件常以具体API形式出现。

3. 服务组件的实现与语言是无关的,而传统组件常绑定某种特定的语言。

4. 服务组件可以通过组件容器提供QoS的服务,而传统组件完全由程序代码直接控制。

服务模块

服务模块(简称模块)由一个或多个具有内在业务联系的服务组件构成。把多少服务组件放在一个模块中,或者把哪些服务组件放在一起主要取决于业务需求和部署上灵活性的要求。模块是SCA中的运行单位,因为一个SCA模块背后对应的是一个J2EE的企业应用项目。