SCA無(wú)疑是目前業(yè)界最為火熱的詞語(yǔ)之一,粗略的翻閱了一下SCA V0.9的規(guī)范,先不論SCA的商業(yè)因素,不得不感嘆于SCA確實(shí)可以稱為企業(yè)應(yīng)用開發(fā)的利器,而SCA的野心也是從目前的規(guī)范中可見(jiàn)一斑。
SOA是近些年來(lái)各大廠商一直炒作的一個(gè)熱門詞語(yǔ),不過(guò)基于SOA思想如何來(lái)開發(fā)系統(tǒng)是沒(méi)有規(guī)范的,各大廠商可謂是各有一套,而SCA呢,就是出于這個(gè)目的來(lái)制定的,SCA旨在為基于SOA思想的系統(tǒng)制定開發(fā)、部署的規(guī)范,對(duì)于SOA大家千萬(wàn)不要以為就是Webservice,Webservice只是實(shí)現(xiàn)SOA思想的一種可選的技術(shù)而已,SOA思想只是一個(gè)純粹的概念,意在強(qiáng)調(diào)系統(tǒng)是以服務(wù)的方式來(lái)形成架構(gòu),而其實(shí)只要你的系統(tǒng)是這么做的,就可以稱為是SOA的系統(tǒng),而不是說(shuō)一定要是采用了象webservice這些的才能稱為SOA的系統(tǒng)。
既然SCA是為基于SOA思想的系統(tǒng)而制定的開發(fā)、部署規(guī)范,它首先必然是具備了SOA的一系列的優(yōu)點(diǎn),象跨語(yǔ)言、分布式、以服務(wù)的思想構(gòu)建系統(tǒng)等。
SOA的思想方式多種多樣,SCA則為基于SOA思想的系統(tǒng)制定了統(tǒng)一的開發(fā)規(guī)范,那就是面向服務(wù)的組件架構(gòu),這個(gè)部分和OSGi的DS基本可以說(shuō)是完全一樣的,都是一種對(duì)于模塊規(guī)范開發(fā)的標(biāo)準(zhǔn)的定義,SCA中對(duì)于模塊同樣的劃分為多個(gè)組件,每個(gè)組件可對(duì)外提供一個(gè)或多個(gè)服務(wù),同時(shí)可引用其他組件提供的一個(gè)或多個(gè)服務(wù),由于SCA是基于為企業(yè)應(yīng)用開發(fā)提供方便的思想而制定的,這就使得在面向服務(wù)的組件架構(gòu)的考慮上,和OSGi相比呈現(xiàn)了更全面的考慮,最重要的自然是體現(xiàn)在了對(duì)于分布式應(yīng)用以及本地調(diào)用集成這兩點(diǎn)上:
1、分布式應(yīng)用
????? SCA支持遠(yuǎn)程調(diào)用其他組件的服務(wù),而這點(diǎn)正是OSGi的一個(gè)巨大的缺點(diǎn),也是EEG現(xiàn)在正在努力做的;SCA對(duì)于遠(yuǎn)程調(diào)用其他組件的服務(wù)支持象Webservice、JMS、JCA、RMI、CORBA等等方式的調(diào)用。
2、本地調(diào)用集成
????? 本地調(diào)用的集成上是OSGi中的一個(gè)挺大的缺點(diǎn),當(dāng)然,這也是因?yàn)镺SGi制定時(shí)考慮的目標(biāo)不同的原因,本地調(diào)用的集成上SCA支持象Spring調(diào)用SCA中的服務(wù)、EJB的調(diào)用等等,當(dāng)然,SCA同樣支持其他語(yǔ)言的調(diào)用,象php、c++等等。
基于SCA,無(wú)論對(duì)于構(gòu)建本地的應(yīng)用或分布式的應(yīng)用都是不錯(cuò)的,SCA制定的面向服務(wù)的組件架構(gòu)無(wú)疑是一種不錯(cuò)的開發(fā)規(guī)范,其實(shí),這也就是將我們平時(shí)在設(shè)計(jì)系統(tǒng)的方法進(jìn)行了規(guī)范化(模塊--組件--服務(wù)),由于SCA目標(biāo)就是為了支撐企業(yè)應(yīng)用的,它對(duì)于各種技術(shù)集成的考慮上無(wú)疑使得它在這塊超越了OSGi。
對(duì)于部署,SCA制定了很方便的方式來(lái)完成,對(duì)于每個(gè)組件可選擇多種綁定方式,通過(guò)選擇的綁定方式來(lái)決定該組件的服務(wù)對(duì)外提供的方式,如可為組件選擇webservice的綁定方式,那么在外部就可以通過(guò)webservice的方式來(lái)調(diào)用這個(gè)組件的服務(wù),又或者可以提供java接口等其他的方式,完全可以根據(jù)應(yīng)用來(lái)決定組件對(duì)外提供服務(wù)的方式。
對(duì)于SCA中的組件的修改,SCA同樣是支持動(dòng)態(tài)的方式。
SCA對(duì)于組件中的服務(wù)的調(diào)用提供了異步調(diào)用的支持,在異步調(diào)用的支持上SCA的考慮也較為全面,象JMS方式的、RMI方式的等等。
SCA對(duì)于組件中的服務(wù)的通訊數(shù)據(jù)采用SDO標(biāo)準(zhǔn)。
對(duì)于企業(yè)應(yīng)用,SCA還提供了關(guān)鍵的一些基礎(chǔ)設(shè)施,象安全性、事務(wù)、可靠調(diào)用等,這對(duì)于企業(yè)應(yīng)用的開發(fā)而言就變得很方便了。
總體而言,SCA在企業(yè)應(yīng)用開發(fā)層次而言,吸取了OSGi的模塊化開發(fā)、部署的規(guī)范的優(yōu)點(diǎn),同時(shí)又考慮到了企業(yè)應(yīng)用中的需求,這使得對(duì)于企業(yè)應(yīng)用而言,SCA規(guī)范無(wú)疑是全面超越了OSGi,而各大廠商的積極推進(jìn)必然會(huì)使得SCA在短時(shí)間內(nèi)全面流行, IBM的WPS已經(jīng)支持SCA方式的開發(fā)、部署了,SCA提供的規(guī)范的模塊化的開發(fā)、靈活的部署以及調(diào)用方式、跨語(yǔ)言的標(biāo)準(zhǔn)以及提供的聲明式的基礎(chǔ)設(shè)施使得它足以成為企業(yè)應(yīng)用開發(fā)的利器。
SCA確實(shí)可以成為企業(yè)應(yīng)用開發(fā)的利器,因?yàn)樗蛛x了企業(yè)應(yīng)用開發(fā)中的開發(fā)以及部署,而在開發(fā)上通過(guò)它提供的聲明式的基礎(chǔ)設(shè)施(就像spring中的POJO Enhanced)使得開發(fā)人員的關(guān)注點(diǎn)可以集中到業(yè)務(wù)的實(shí)現(xiàn),基于SCA規(guī)范了系統(tǒng)的開發(fā)和部署方式,同時(shí)對(duì)開發(fā)人員屏蔽了其中諸如遠(yuǎn)程調(diào)用、事務(wù)、安全這些復(fù)雜的東西的實(shí)現(xiàn),但是SCA是否真的就能成為對(duì)于企業(yè)應(yīng)用集成可用的東西呢(但它好象也沒(méi)說(shuō)它要成為這樣的東西
),值得打上一個(gè)很大的問(wèn)號(hào)。
來(lái)看一個(gè)基于SCA的系統(tǒng)的典型的架構(gòu):

感興趣的同學(xué)們可關(guān)注下SCA的官方網(wǎng)站:http://www.osoa.org
ps:以SCA這樣的情形來(lái)看的話,個(gè)人覺(jué)得SCA就象是OSGi在企業(yè)應(yīng)用中的延伸,OSGi成立EEG無(wú)疑一定層面上和SCA這邊是有一定的沖突的,相對(duì)來(lái)講至少目前OSGi已經(jīng)有所落后了,不知道EEG具體是怎么考慮的.....在SCA規(guī)范和OSGi規(guī)范的層面上來(lái)比較的話,三十亂彈blog中的一句話:“SCA規(guī)范中目前對(duì)SCA容器的實(shí)現(xiàn)尚沒(méi)有一個(gè)指導(dǎo)性的意見(jiàn),但是OSGI規(guī)范在這方面已經(jīng)做的很完善了。OSGI規(guī)范中定義了Framework、Start Level、Package Admin、Security,詳細(xì)描述了不同組件之間的依賴規(guī)則(靜態(tài)依賴,動(dòng)態(tài)導(dǎo)入),不同組件之間使用獨(dú)立的類名稱空間?!秉c(diǎn)出了要點(diǎn)。