Tuscany SCA擴(kuò)展機(jī)制研究(1)
Tuscany作為Apache的孵化項(xiàng)目,提供了對SOA的支持,包含的模塊有SCA,SDO,DAS三大塊,本節(jié)僅對其SCA實(shí)現(xiàn)進(jìn)行一些探討。SCA實(shí)現(xiàn)的目前的版本為0.91,是在Tuscany1.0M2的基礎(chǔ)上演化而來的,對于SCA規(guī)范的支持也由0.96 Spec發(fā)展到了1.0Spec。其項(xiàng)目也是相當(dāng)活躍的,從其Mail List中可見一斑。而對于其分化版本fabric3,顯得相對冷清一些。
Tuscany作為Apache的孵化項(xiàng)目,提供了對SOA的支持,包含的模塊有SCA,SDO,DAS三大塊,本節(jié)僅對其SCA實(shí)現(xiàn)進(jìn)行一些探討。SCA實(shí)現(xiàn)的目前的版本為0.91,是在Tuscany1.0M2的基礎(chǔ)上演化而來的,對于SCA規(guī)范的支持也由0.96 Spec發(fā)展到了1.0Spec。其項(xiàng)目也是相當(dāng)活躍的,從其Mail List中可見一斑。而對于其分化版本fabric3,顯得相對冷清一些。
Tuscany0.91相對于1.0M2,在結(jié)構(gòu)上做了較大的調(diào)整,在功能處理上更加模塊化了,其擴(kuò)展也相對容易一些,僅需要實(shí)現(xiàn)較少的接口,就能達(dá)到目的,下圖為Tuscany的運(yùn)行期結(jié)構(gòu)圖:

SCA擴(kuò)展機(jī)制包含了4個(gè)方面的擴(kuò)展,有implementaion擴(kuò)展,binding擴(kuò)展,interface擴(kuò)展,databinding擴(kuò)展,下面就對其擴(kuò)展機(jī)制分別作一下分析。
1、 Implementaion擴(kuò)展
Implementation作為component的實(shí)現(xiàn)而存在,是作為component服務(wù)的提供者,component服務(wù)調(diào)用時(shí),調(diào)用的就是implementaion提供的功能。Tuscany目前已實(shí)現(xiàn)的implementaion類型有java,script,spring,bpel,這些類型已能基本滿足客戶的需要,但有些情況還是需要用戶自己定義一些特殊的實(shí)現(xiàn)。其擴(kuò)展步驟如下:
a. 定義組裝模型擴(kuò)展(Implementation接口)
b. 定義接口及實(shí)現(xiàn)組裝模型擴(kuò)展
c. 定義實(shí)現(xiàn)的解析器(擴(kuò)展StAXArtifactProcessor中的read,write,resolve方法)
d. 定義實(shí)現(xiàn)的提供者(擴(kuò)展ImplementationProvider接口,生成調(diào)用Invoker)
e. 注冊解析器及提供者(擴(kuò)展ModuleActivator)
f. 發(fā)布ModuleActivator到系統(tǒng)中(在文件META-INF/loaders/com.primeton.sca.runtime.IModelLoader文件中注冊)
擴(kuò)展CRUD示例:
a. 在composite文件中定義component實(shí)現(xiàn)






對應(yīng)的schema為:










b. 接口定義
a) CRUDImplementation interface 擴(kuò)展 org.apache.tuscany.sca.assembly.Implementation
b) CRUDImplementationFactory interface 定義 createImplementation() 方法
c) 定義實(shí)現(xiàn)接口CRUDImplementation
d) 定義實(shí)現(xiàn)工廠類CRUDImplementationFactory
c. 實(shí)現(xiàn)解析器StAXArtifactProcessor,對定義的implementation.crud directory=“/tmp”進(jìn)行解析
d. 實(shí)現(xiàn)調(diào)用提供者ImplementationProvider,生成Invoker,通過方法createCallbackInvoker,createInvoker來完成
e. 在ModuleActivator中注冊,在其start方法中注冊,stop方法中銷毀
f. 系統(tǒng)注冊(在com.primeton.sca.runtime.IModelLoade文件中注冊ModuleActivator)
其實(shí)現(xiàn)的類圖如下:
(待續(xù))