


Apache Tuscany SCA Java架構1
概述
SCAJava運行時由core和extension組成。Core本質(zhì)上來說是一個多VM的wiring引擎。該引擎使用IOC(控制反轉)和DI(依賴注入)原則來連接組件。
Core
Extension
Extension增強SCA運行時的功能。Extesion類型不是固定的。而core則是通過提供對extension模塊開放支持來使得設計盡量靈活。
- 組件實現(xiàn)類型,例如:Spring, Groovy 和Java
- 綁定類型,比如:Axis, CXF ,AMQP ,ActiveMQ, JXTA
- 數(shù)據(jù)綁定類型,比如:JAXB, SDO ,XmlBean
- 接口綁定類型,比如:WSDL, Java
關于如何實現(xiàn)一個extension的詳細信息可以在Extensions Guide中查看。
運行時
Core是設計得可以嵌入于許多不同的主機環(huán)境下的。例如,core也許用于OSGI容器、單獨的運行時環(huán)境、serlvet引擎或J2EE應用服務器中。運行時的性能根據(jù)主機環(huán)境不同而不同。
Java SCA運行時的高層概述:
下圖是由關鍵的模塊/包組成的SCA運行時高層視圖
1、 SCA Spec API:由SCA Java Client and Implementation定義的API
2、 API:擴展了SCA Spec API的Tuscany API
3、 Core:運行時實現(xiàn)和SPI擴展機制
4、 Extension:
1. Component(英文原版有錯誤) implementation – 擴展語言支持:例如 BPEL,Python,C++,Ruby等
2. Binding – 擴展協(xié)議支持:例如 Axis2, CXF等
3. Interface Binding – 擴展服務定義類型:比如SWDL, Java等
4. Databinding – 擴展數(shù)據(jù)支持:比如SDO, JAXB等
5、 Host platforms:Tuscany運行時的主機環(huán)境
<!--[if !vml]--><!--[endif]-->
內(nèi)部高層視圖
參考下圖:
<!--[if !vml]--><!--[endif]-->
引導過程
引導過程是由主機環(huán)境控制的。默認的實現(xiàn)是DefaultBootstrapper。運行時由某個成型的SCA Assembly XML文件序列化而來并處理服務裝配。
- 裝載階段處理SCDL并創(chuàng)建一個內(nèi)存模型處理相應的運行時工件(例如組件componet,服務service,引用reference)
- 連接階段將對服務的引用連接起來
SCA裝配模型在Tuscany中是用一系列接口表示的。如下是些關鍵的元素。
- SCA component 是配置化的SCA實現(xiàn)的實例,它可以提供服務或消費服務。
- SCA service用于聲明實現(xiàn)的可以被外部訪問的服務
- SCA reference用于表示該實現(xiàn)對某些其他實現(xiàn)所提供的服務的依賴。該依賴的服務可以通過配置來指定。
Implementation是用于描述軟件技術的概念,例如在面向服務的應用中實現(xiàn)了一個或多個服務的Java 類,BEPL,XSLT轉換,C++類。SCA composite也是implementaion。
ComponentType涉及實現(xiàn)的可配置的方面。
Interface定義了一個或多個業(yè)務功能。這些業(yè)務功能通過Service提供,通過Reference讓其他組件使用。服務是由實現(xiàn)的接口來定義的。現(xiàn)在SCA支持兩種接口類型系統(tǒng):Java接口、SWDL portType
SCA composite是SCA域中的compositon的基礎單元。SCA Composite是組件的裝配,服務、應用和wire都互相連接。
SCA wire將服務引用連接到服務上。
Binding是被服務和引用所使用的。引用使用綁定來描述訪問機制,該機制用于訪問連接的服務。服務使用綁定來描述客戶程序調(diào)用服務的訪問機制。
Property是考慮到有的實現(xiàn)配置需要顯式地設置數(shù)據(jù)值。該數(shù)據(jù)值由組件提供,當然也可能來源于容器composite的屬性。
<!--[if !vml]--><!--[endif]-->
Contribution
Tuscany運行時提供了一個框架來支持SCA的contribution。框架可以通過下列的兩個擴展點來擴展:
PackageProcessorExtensionPoint:它用于處理不同的包裝格式或歸檔的擴展,可以是目錄、Jar、OSGI bundle、EAR、War或Zip。
<!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->l <!--[endif]-->包處理器會掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當前有支持文件夾/文件系統(tǒng)和 Jar contribution包。為了讓contribution服務有效,包處理器要注冊自己給包處理extension 。
<!--[if !supportLists]-->l <!--[endif]-->工件處理器用于處理contribution上的每個有效的工件。為了讓contribution服務有效,工件處理器要注冊自己給工件處理extension 。對于每個工件,工件處理器分兩個階段被調(diào)用。
<!--[if !supportLists]-->? <!--[endif]-->讀階段:這里是你讀取工件(可以是一個文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務在所有注冊了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會把該信息轉換成指向被引用模型的指針。注意:你沒有必要在這個時刻完全讀取并裝載模型,你可以在以后來完成這些工作。
<!--[if !supportLists]-->? <!--[endif]-->解析階段:這個階段讓你有機會解析對其他模型的引用。這個時刻,SCA contribution中所有的描述工件的模型都已經(jīng)讀取,并注冊了工件解析器,準備被解析。
<!--[if !supportLists]-->l <!--[endif]-->所有可部署的composite應該在現(xiàn)在準備部署到SCA域中。
包處理器會掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當前有支持文件夾/文件系統(tǒng)和Jar contribution包。為了讓contribution服務有效,包處理器要注冊自己給包處理extension 。
工件處理器用于處理contribution上的每個有效的工件。為了讓contribution服務有效,工件處理器要注冊自己給工件處理extension 。對于每個工件,工件處理器分兩個階段被調(diào)用。
? 讀階段:這里是你讀取工件(可以是一個文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務在所有注冊了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會把該信息轉換成指向被引用模型的指針。注意:你沒有必要在這個時刻完全讀取并裝載模型,你可以在以后來完成這些工作。
? 解析階段:這個階段讓你有機會解析對其他模型的引用。這個時刻,SCA contribution中所有的描述工件的模型都已經(jīng)讀取,并注冊了工件解析器,準備被解析。
所有可部署的composite應該在現(xiàn)在準備部署到SCA域中。
實現(xiàn)擴展
實現(xiàn)擴展負責實現(xiàn)類型的支持,例如Java,
綁定擴展
綁定擴展負責對綁定類型進行支持,例如web service,JMS,JSON-RPC和RMI
接口擴展
接口擴展負責接口類型的擴展,例如Java接口和WSDL 1.1 portType
數(shù)據(jù)綁定擴展
關鍵字:Apache Tuscany SCA Java 架構
新文章:
- CentOS7下圖形配置網(wǎng)絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解