OSGi和SCA到底能有什么關(guān)系呢,確實(shí),至少?gòu)默F(xiàn)有的OSGi規(guī)范以及SCA規(guī)范分別來(lái)看,兩者沒(méi)有直接的關(guān)聯(lián),由于OSGi規(guī)范是對(duì)于嵌入式領(lǐng)域的軟件而制定的,其特別注重軟件的動(dòng)態(tài)性的支持,而SCA規(guī)范是對(duì)于企業(yè)應(yīng)用領(lǐng)域的軟件而制定的,并且是基于SOA的,其特別注重對(duì)于企業(yè)應(yīng)用而言的基礎(chǔ)設(shè)施的實(shí)現(xiàn),同時(shí)又盡量的去屏蔽對(duì)于SCA容器使用者而言SOA帶來(lái)的技術(shù)實(shí)現(xiàn)細(xì)節(jié)的難度;但根據(jù)OSGi規(guī)范以及SCA規(guī)范,同時(shí)又能發(fā)現(xiàn)兩者有個(gè)共同希望解決的問(wèn)題,那就是規(guī)范的模塊化,這是OSGi規(guī)范和SCA規(guī)范中的一個(gè)共同目標(biāo)。
在規(guī)范的模塊化上無(wú)疑OSGi占據(jù)了優(yōu)勢(shì),OSGi規(guī)范詳細(xì)的定義了作為OSGi框架應(yīng)該如何去實(shí)現(xiàn)以支撐規(guī)范的模塊化,同時(shí)也定義了應(yīng)該如何規(guī)范的來(lái)建設(shè)模塊,而在SCA規(guī)范中只定義了如何規(guī)范的來(lái)建設(shè)模塊,并未定義如何規(guī)范的來(lái)實(shí)現(xiàn)SCA容器,既然是這樣,SCA規(guī)范是否可以考慮直接使用現(xiàn)有的好輪子---OSGi作為SCA容器實(shí)現(xiàn)的基礎(chǔ)呢,在使用OSGi的情況下,SCA容器就沒(méi)必要費(fèi)勁就考慮怎么樣實(shí)現(xiàn)自己規(guī)范的模塊化了,這個(gè)就有點(diǎn)象當(dāng)年的Java Module System規(guī)范,除非SCA小組能夠有突破性進(jìn)展的實(shí)現(xiàn)規(guī)范模塊化的方法,那另當(dāng)別論。
使用OSGi的話自然的就給SCA帶去了一個(gè)好處,那就是動(dòng)態(tài)性的支持上,這是OSGi的核心也是最大的優(yōu)勢(shì),Peter在他最新的blog中也提及Module Layer是OSGi規(guī)范中最為關(guān)鍵的部分,正是因?yàn)镸odule Layer才使得OSGi其他部分得以搭建。
當(dāng)然,基于OSGi去實(shí)現(xiàn)SCA容器必然會(huì)碰到這樣那樣的技術(shù)難題,這可以依靠OSGi框架的實(shí)現(xiàn)者們和SCA容器的實(shí)現(xiàn)者們來(lái)協(xié)作的解決,就像Spring and OSGi。
那么對(duì)于OSGi而言呢,基于OSGi去實(shí)現(xiàn)SCA容器又會(huì)給OSGi帶來(lái)什么好處呢,其實(shí)非常明顯,在這樣的情況下OSGi就真正的進(jìn)入了企業(yè)應(yīng)用領(lǐng)域,真正的成為了以后企業(yè)應(yīng)用領(lǐng)域的核心基礎(chǔ),所以我在之前的blog中說(shuō)過(guò),SCA非常象是OSGi在企業(yè)應(yīng)用的延伸或擴(kuò)展形成的規(guī)范。
當(dāng)然,要做到上面所說(shuō)的,不僅僅是想就有用的,需要去努力做到,近期準(zhǔn)備發(fā)封mail先試探著問(wèn)問(wèn)OSGi EEG們對(duì)于SCA有什么想法,是否可以考慮直接讓SCA變成OSGi EEG的規(guī)范,同時(shí)讓SCA規(guī)范制定小組納入OSGi Core作為SCA容器實(shí)現(xiàn)的規(guī)范的部分。
ps:近期Spring and OSGi的進(jìn)展非常可喜,現(xiàn)在Spring and OSGi的project已經(jīng)提升為了正式的project,而且在提升之前也對(duì)外正式公布了Spring and OSGi的repository,Spring and OSGi project的網(wǎng)站地址位于:
http://www.springframework.org/osgi