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,詳細描述了不同組件之間的依賴規則(靜態依賴,動態導入),不同組件之間使用獨立的類名稱空間。”點出了要點。