2005年11月, IBM、BEA、IONA、Oracle、S等几家厂商就合作建立新的业内规范来简化 SOA 应用发展达成了一致,共同发布了两项针对SOA的重要构件模型规范——SCA 0.9和SDO。此后,该团体陆续吸引了Red Hat、普元、TIBCO等多家公司的加盟,形成了OSOA(Open Service Oriented Architecture)联盟,目前成员数量达到18家。OSOA联盟旨在为SOA起草一系列的规范,并以免版税的许可方式提供给业界使用。AP
SCA规范旨在简化服务的创建和合成,对于运用基于SOA方式服务的应用构建十分关键。随着SCA规范的完成,联盟合作厂商希望将其标准化过程提交给OASIS。此外,联盟厂商也已完成了SDO规范,旨在实现对多个站点中多种格式数据的统一访问,并将把SDO基于Java的规范开发和管理提交给Java社团过程(Java Community Process,JCP)组织,而基于非Java的规范(C++)提交给OASIS。
SCA是一种规范,它使开发人员可以将注意力集中在业务逻辑的编写上。更直接地说,它是一种大大改进了的部署描述符,它可以使用任何语言而不限于Java。此外,编程人员还可以使用编程式语言和声明式语言,比如BPEL和XSLT(eXtensible Stylesheet Language Transformation,扩展样式表转换语言)。SCA的特别之处在于,它对安全性、事务和可靠消息传递之类的特性使用了声明式策略的理念。
SCA中的一个关键推动因素是SDO(Service Data Object,服务数据对象)。SDO用于表示业务数据、参数以及服务调用的返回值,当它遍历服务网络时,它还是一种表示数据的方式。注意,也可以使用XML Beans及其他技术。
SCA组件被组成为程序集。程序集是服务级的应用程序,它是服务的集合,这些服务被连接在一起,并进行了正确的配置。SCA程序集运行在两个级别:第一种情况,程序集是系统内的一组松散连接的组件;另一种情况,程序集是模块内的一组松散连接的组件。二者的区别在于,一般来说,模块是组件的集合,而系统是模块的集合。此外,系统对应于“大规模编程”(programming in the large或megaprogramming),而模块对应于“小规模编程”(programming in the small),比如构建当今的典型应用程序。