Spring

在很多企业级的应用系统中,Spring已经担负起可靠的细粒度的集成框架;

OSGi

正在成为Java世界里最为有效的解决依赖关系的技术;

SCA

SCA是被标准化组织接纳为新一代标准的SOA重要构成之一;

一些有力的机构正在促成这个趋势

  • Spring正在实现让他的ApplicationContext运行于OSGi内核之上的方案。
  • OSGi R4提出了可声明服务标准(DS)。该标准极大地推动了OSGi的服务化特征,包括,服务发现、服务发布和服务注册。
  • SCA1.0标准明确提出了通过Spring实现SCA构建的内容。开源社区如Tuscany都提供了这种实现。
    这种集成为Spring添加的分布式特性,在JVM上提供了非Java的技术实现环境(SOA是语言无关的)
    而OSGi将可以在SCA中扮演多种角色,SCA为OSGi增加了分布式特性,将OSGi boundle发布为SCA构件,OSGi可以作为SCA的运行基础,并为SCA提供更加便利的扩展平台;


图中:SCA容器运行在OSGi内核中,SCA构件X借助OSGi注册服务确定boundle A的位置,并访问它


图中:OSGi的boundle A通过OSGi的注册服务访问到SCA容器中的构件X


图中:左侧是一个异构环境中的SCA容器,他可能支持如PHP、C++等技术;右侧是一个OSGi内核之上的java SCA容器,他为OSGi提供了与异构环境通讯的能力。

图中,构件X是一个通过implementation.osgi(非标准,但是软件提供商可能增加此扩展)实现的SCA构件,这里,构件X被绑定到一个web服务。反过来,构件X(boundle A)也可以通过SOAP访问议购系统中的构件Y(他也被绑定到一个web服务)。

SCA的先进思想在于:构件的实现(implementation)和引用(reference)将服务的实现和使用分离开来,同时将各种可能的通讯方式从业务代码中分离出来,转为由容器处理。

OSGi与SCA的结合提供了:

  • 一个一致的服务/构件模型
  • 将各种通讯方式以一种标准的方式统一到容器中
  • 基于OSGi的容器,其扩展方式更加简单
  • 多种可选的实现技术,使开发者可以选择最适合具体工作的技术

SCA与Spring

SCA与Spring具有很多相同点,如他们都提供了构件之间的引用和构件的可配置。但是SCA突出的优势在于:SCA是跨语言的,以及支持多种通讯方式的分布式架构:
SCA能够为基于Spring的的应用系统增加:

  • 支持多种协议的远程访问
  • 支持多种编程语言,超出JVM的限制
  • 实现异步编程
  • 能够通过WS-Policy实现安全和事务等
  • No labels