由于 SCA規(guī)范面向企業(yè)應(yīng)用集成,因此SCA構(gòu)件的實(shí)現(xiàn)可以是Java,BPEL,EJB,WebService。從現(xiàn)有的已經(jīng)實(shí)現(xiàn)的產(chǎn)品來看,OSGI更多 的被用來作為單一產(chǎn)品的整體架構(gòu),SCA規(guī)范更多的是被用在面向業(yè)務(wù)的構(gòu)件的組裝規(guī)范,至于SCA產(chǎn)品的架構(gòu)如何則不是SCA規(guī)范所關(guān)心的。

  最近一段時間先后看了SCA規(guī)范和OSGI的規(guī)范。看完之后再對二者作一個全面的比較。

  首先,兩個規(guī)范制定的出發(fā)點(diǎn)和初衷是不一樣的。SCA規(guī)范是為了企業(yè)應(yīng)用集成而制定,OSGI規(guī)范的初衷則是為移動設(shè)備計算而制定的。由于二者 的出發(fā)點(diǎn)不一樣,導(dǎo)致了兩個規(guī)范的側(cè)重點(diǎn)不一樣。SCA規(guī)范現(xiàn)在的版本是0.95,相對OSGI規(guī)范的4.0版本還顯得多少有些稚嫩。

  SCA規(guī)范中著重解決了現(xiàn)有企業(yè)應(yīng)用之間的相互調(diào)用和企業(yè)應(yīng)用如何以面向服務(wù)的思想來建立和部署。但是對于構(gòu)件容器的實(shí)現(xiàn)方面的規(guī)定則有些不足,僅僅是站在使用者的角度描述了客戶端API的規(guī)格。

  而OSGI規(guī)范因?yàn)樽畛醯某霭l(fā)點(diǎn)是為了移動設(shè)備的計算環(huán)境,因此更多的考慮了運(yùn)行時框架和服務(wù)在運(yùn)行時刻的動態(tài)匹配等問題。此外,提供了運(yùn)行時刻應(yīng)用程序的熱部署、解析、運(yùn)行、卸載等能力。應(yīng)該說,OSGI規(guī)范發(fā)展到4.0已經(jīng)是一個比較完善的規(guī)范了。

  SCA規(guī)范中目前對SCA容器的實(shí)現(xiàn)尚沒有一個指導(dǎo)性的意見,但是OSGI規(guī)范在這方面已經(jīng)做的很完善了。OSGI規(guī)范中定義了 Framework、Start Level、Package Admin、Security,詳細(xì)描述了不同組件之間的依賴規(guī)則(靜態(tài)依賴,動態(tài)導(dǎo)入),不同組件之間使用獨(dú)立的類名稱空間。

  由于SCA規(guī)范面向企業(yè)應(yīng)用集成,因此SCA構(gòu)件的實(shí)現(xiàn)可以是Java,BPEL,EJB,WebService。而OSGI的實(shí)現(xiàn)只面向Java語言。這也是由于二者的出發(fā)點(diǎn)不同導(dǎo)致的。

  對于SCA和OSGI的裝配模型,二者是大同小異。二者都可以對外提供服務(wù)(Service),但SCA更偏重設(shè)計時刻的構(gòu)件組裝,而且定義了靈活的構(gòu)件裝配模型,可以由最小的原子構(gòu)件組裝成一個大系統(tǒng)。

  從現(xiàn)有的已經(jīng)實(shí)現(xiàn)的產(chǎn)品來看,OSGI更多的被用來作為單一產(chǎn)品的整體架構(gòu),SCA規(guī)范更多的是被用在面向業(yè)務(wù)的構(gòu)件的組裝規(guī)范,至于SCA產(chǎn)品的架構(gòu)如何則不是SCA規(guī)范所關(guān)心的。

  從上邊的比較可以顯而易見的看出二者分別的缺點(diǎn),SCA規(guī)范過于強(qiáng)調(diào)集成,但是對SCA構(gòu)件的運(yùn)行時刻行為描述太弱,所有的構(gòu)件實(shí)現(xiàn)都是在設(shè)計 時刻綁定的。也許在SCA產(chǎn)品中可以實(shí)現(xiàn)運(yùn)行時刻的動態(tài)綁定,但是作為一個規(guī)范,這是它所欠缺的。OSGI規(guī)范對組件的運(yùn)行時刻描述很完備,但是所有的組 件必須運(yùn)行在同一個虛擬機(jī)中,不同虛擬機(jī)中的組件服務(wù)互操作則稍顯不足。

 

    原文鏈接:http://gocom.primeton.com/blog839_14.htm

Flock 瀏覽器 創(chuàng)建

標(biāo)簽: , , ,