SCA无疑是目前业界最为火热的词语之一,粗略的翻阅了一下SCA V0.9的规范,先不论SCA的商业因素,不得不感叹于SCA确实可以称为企业应用开发的利器,而SCA的野心也是从目前的规范中可见一斑。
SOA是近些年来各大厂商一直炒作的一个热门词语,不过基于SOA思想如何来开发系统是没有规范的,各大厂商可谓是各有一套,而SCA呢,就是出于这个目的来制定的,SCA旨在为基于SOA思想的系统制定开发、部署的规范,对于SOA大家千万不要以为就是Webservice,Webservice只是实现SOA思想的一种可选的技术而已,SOA思想只是一个纯粹的概念,意在强调系统是以服务的方式来形成架构,而其实只要你的系统是这么做的,就可以称为是SOA的系统,而不是说一定要是采用了象webservice这些的才能称为SOA的系统。
既然SCA是为基于SOA思想的系统而制定的开发、部署规范,它首先必然是具备了SOA的一系列的优点,象跨语言、分布式、以服务的思想构建系统等。
SOA的思想方式多种多样,SCA则为基于SOA思想的系统制定了统一的开发规范,那就是面向服务的组件架构,这个部分和OSGi的DS基本可以说是完全一样的,都是一种对于模块规范开发的标准的定义,SCA中对于模块同样的划分为多个组件,每个组件可对外提供一个或多个服务,同时可引用其他组件提供的一个或多个服务,由于SCA是基于为企业应用开发提供方便的思想而制定的,这就使得在面向服务的组件架构的考虑上,和OSGi相比呈现了更全面的考虑,最重要的自然是体现在了对于分布式应用以及本地调用集成这两点上:
1、分布式应用
SCA支持远程调用其他组件的服务,而这点正是OSGi的一个巨大的缺点,也是EEG现在正在努力做的;SCA对于远程调用其他组件的服务支持象Webservice、JMS、JCA、RMI、CORBA等等方式的调用。
2、本地调用集成
本地调用的集成上是OSGi中的一个挺大的缺点,当然,这也是因为OSGi制定时考虑的目标不同的原因,本地调用的集成上SCA支持象Spring调用SCA中的服务、EJB的调用等等,当然,SCA同样支持其他语言的调用,象php、c++等等。
基于SCA,无论对于构建本地的应用或分布式的应用都是不错的,SCA制定的面向服务的组件架构无疑是一种不错的开发规范,其实,这也就是将我们平时在设计系统的方法进行了规范化(模块--组件--服务),由于SCA目标就是为了支撑企业应用的,它对于各种技术集成的考虑上无疑使得它在这块超越了OSGi。
对于部署,SCA制定了很方便的方式来完成,对于每个组件可选择多种绑定方式,通过选择的绑定方式来决定该组件的服务对外提供的方式,如可为组件选择webservice的绑定方式,那么在外部就可以通过webservice的方式来调用这个组件的服务,又或者可以提供java接口等其他的方式,完全可以根据应用来决定组件对外提供服务的方式。
对于SCA中的组件的修改,SCA同样是支持动态的方式。
SCA对于组件中的服务的调用提供了异步调用的支持,在异步调用的支持上SCA的考虑也较为全面,象JMS方式的、RMI方式的等等。
SCA对于组件中的服务的通讯数据采用SDO标准。
对于企业应用,SCA还提供了关键的一些基础设施,象安全性、事务、可靠调用等,这对于企业应用的开发而言就变得很方便了。
总体而言,SCA在企业应用开发层次而言,吸取了OSGi的模块化开发、部署的规范的优点,同时又考虑到了企业应用中的需求,这使得对于企业应用而言,SCA规范无疑是全面超越了OSGi,而各大厂商的积极推进必然会使得SCA在短时间内全面流行, IBM的WPS已经支持SCA方式的开发、部署了,SCA提供的规范的模块化的开发、灵活的部署以及调用方式、跨语言的标准以及提供的声明式的基础设施使得它足以成为企业应用开发的利器。
SCA确实可以成为企业应用开发的利器,因为它分离了企业应用开发中的开发以及部署,而在开发上通过它提供的声明式的基础设施(就像spring中的POJO Enhanced)使得开发人员的关注点可以集中到业务的实现,基于SCA规范了系统的开发和部署方式,同时对开发人员屏蔽了其中诸如远程调用、事务、安全这些复杂的东西的实现,但是SCA是否真的就能成为对于企业应用集成可用的东西呢(但它好象也没说它要成为这样的东西 ),值得打上一个很大的问号。
来看一个基于SCA的系统的典型的架构:
感兴趣的同学们可关注下SCA的官方网站:http://www.osoa.org
ps:以SCA这样的情形来看的话,个人觉得SCA就象是OSGi在企业应用中的延伸,OSGi成立EEG无疑一定层面上和SCA这边是有一定的冲突的,相对来讲至少目前OSGi已经有所落后了,不知道EEG具体是怎么考虑的.....在SCA规范和OSGi规范的层面上来比较的话,三十乱弹blog中的一句话:“SCA规范中目前对SCA容器的实现尚没有一个指导性的意见,但是OSGI规范在这方面已经做的很完善了。OSGI规范中定义了Framework、Start Level、Package Admin、Security,详细描述了不同组件之间的依赖规则(静态依赖,动态导入),不同组件之间使用独立的类名称空间。”点出了要点。
SCA:企业应用开发的利器
最新推荐文章于 2024-09-04 07:35:48 发布