首先,需要明确的是,SCA还没有成为正式的标准,尽管SCA目前已经有比较稳定的规范,有些文章错误地将SCA作为标准来看待。
SCA目标:基于组件的编程一直是软件业简化编程和提高效率和质量的一个重要方法,但是往往对于不同语言我们有不同的组件模型,比如在J2EE技术领域,就有EJB,POJO,JDBC,JMS等。这对于项目初期分析和设计人员来说,是一个很大的挑战,导致在初期就需要选定具体的语言和技术。SCA的目的是使用户在构建企业应用时有一个不再直接面对具体的技术细节的层次,而是通过服务组件的方式来构建应用。这种方式也使得客户的企业应用具有良好的分层架构,能够很好的分离应用的业务逻辑和IT逻辑,不但易于应用的构建,也易于应用的更改和部署。
SCA和WSDL
WSDL是Web服务描述语言,但它只定义了服务接口,并不提供描述一个服务所依赖的其它服务,以及这个服务所需要使用的配置策略和服务之间的依赖关系。单独通过WSDL很难实现服务之间的组合调用。SCA比WSDL走的更远,SCA定义了服务组件模型以及服务组装模型。服务模型允许服务开发者不但定义服务的接口而且还定义了这个服务和其他服务的依赖关系,以及这些交互(事务,安全,以及可靠 传输)之间的策略,还有服务潜在的配置等功能。服务组件是SCA中的基本组成元素和基本构建单位,也是我们具体实现业务逻辑的地方。我们可以把它看成是构建我们应用的积木。
SCA和JBI
SCA和JBI其目的有很多相同之处:JBI在JSR 208中被定义,已经成为使用Java语言把服务容器组装为合成应用的标准;SCA是被推荐标准,为在不同平台不同语言解决组装问题的提供了更广泛的方法。SCA关注是的SOA开发者最初看到的和接触到的,SCA并不关注SCA各个模块最后是如何实现的。如果把SOA分成三个抽象层次的话:业务、服务、技术。那么SCA对应的就是服务层的规范。JBI提供了一系列的API,用来建立开放、可扩展和模块化的企业服务总线。可以说,JBI已经触及到具体的技术层面。SCA没有局限于具体语言,而JBI仅限于用Java,因此JBI的应用范围更严格,在SOA未来的标准体系结构中,可能成为其中的一部分Java实现标准。