OSGi規(guī)范介紹

第一章 引言
OSGi(Open Service Gateway Initiative)最初的目的就是為各種嵌入式設(shè)備提供通用的軟件運行平臺,即可以屏蔽設(shè)備操作系統(tǒng)與硬件區(qū)別的中間件平臺。PC基本上被 Wintel架構(gòu)壟斷,運行在PC上的應(yīng)用程序完全可以在另一臺PC上運行;但對于其他設(shè)備來說就不同,它們的硬件平臺可能完全不同,其操作系統(tǒng)也是來自不同廠商,所以任何設(shè)備上的應(yīng)用程序都需要定制,于是就產(chǎn)生了對中間件平臺的需求。
OSGi并不是專為家庭網(wǎng)絡(luò)而制定的,除了住宅網(wǎng)關(guān),像車載電腦等其他移動嵌入式設(shè)備也都可以通過OSGi接入Internet,獲取不同的應(yīng)用服務(wù)。它為服務(wù)供應(yīng)商、軟件供應(yīng)商、網(wǎng)關(guān)開發(fā)人員以及設(shè)備供應(yīng)商提供了一個開放、通用的架構(gòu),使它們能互動地開發(fā)、部署和管理服務(wù)。其軟件環(huán)境基于Sun的 JAVA虛擬機,并不涉及具體的連接協(xié)議。對于任何新設(shè)備,它都能夠靈活地將其納入現(xiàn)有網(wǎng)絡(luò)。可以使用OSGi的對象包括各種數(shù)字和模擬的機頂盒、服務(wù)網(wǎng)關(guān)、有線電視電纜調(diào)制解調(diào)器、消費類電子產(chǎn)品、PC、工業(yè)計算機、汽車等。
因為OSGi基于JAVA技術(shù),而JAVA最大的好處就是平臺無關(guān)性。在不同類型的住宅網(wǎng)關(guān)設(shè)備上都可以實現(xiàn)OSGi軟件。而且OSGi規(guī)范可以與各種設(shè)備訪問標準橋接(如圖1所示),比如遵循OSGi的系統(tǒng)可以很好地部署和管理Jini服務(wù),它可以提供Jini設(shè)備與服務(wù)提供商之間的交互。對于像 HAVi、UPnP等基于非JAVA技術(shù)的標準和規(guī)范,OSGi也可以提供與它們溝通的橋梁。

第二章 OSGi規(guī)范介紹
2.1 OSGi規(guī)范的體系結(jié)構(gòu)
在OSGi規(guī)范中提供了一個參考的體系架構(gòu)[1],也基本上體現(xiàn)了OSGi的設(shè)計初衷。
OSGi的體系架構(gòu)是基于這樣一個模型的:經(jīng)營者管理著一個潛在的巨大的服務(wù)網(wǎng)絡(luò)平臺。OSGi規(guī)范假設(shè)這個服務(wù)平臺是完全被這個經(jīng)營者控制,并且經(jīng)營者使用該服務(wù)平臺去運行來自不同服務(wù)提供者提供的服務(wù)。然而這只是一個場景,還有其他模型,例如PC機的部署,工業(yè)應(yīng)用(如,移動電話基站是一個管理中心完全控制著各個方面),中間件模型等。OSGi最廣泛的應(yīng)用是在網(wǎng)絡(luò)化的服務(wù)。除了參考模型之外,規(guī)范之中還提到了其他的一些模型。請參考OSGi 3.0規(guī)范[1]。
2.1.1 OSGi參考體系架構(gòu)的特點
1. 商業(yè)驅(qū)動:經(jīng)營者的觀點驅(qū)動OSGi的體系架構(gòu)。
2. 完美:體系架構(gòu)必須是足夠完善和詳細的,以致允許開發(fā)商生產(chǎn)出健壯的產(chǎn)品。
3. 不受限的:由于經(jīng)營者所操作的服務(wù)平臺在性能和網(wǎng)絡(luò)環(huán)境的變化是非常大的。
4. 開放:標準不是為一個具體的系統(tǒng)而設(shè)計的,OSGi參考體系架構(gòu)必須考慮和支持許多不同的場景。
2.1.2 OSGi參考體系架構(gòu)所涉及到實體
1. 服務(wù)平臺:一個JAVA虛擬機的實例,一個OSGi框架結(jié)構(gòu),和運行著的服務(wù)包的集合。
2. 服務(wù)平臺服務(wù)器(SPS):駐留一個或多個服務(wù)平臺的硬件。
3. 運營商:掌控許多服務(wù)平臺的組織。
4. 服務(wù)應(yīng)用:一套軟件包,文檔和支撐軟件所組合起來的應(yīng)用,這些應(yīng)用向終端用戶提供服務(wù)。
5. 服務(wù)用戶:獲取服務(wù)應(yīng)用服務(wù)的用戶。
6. 服務(wù)提供者:開發(fā)服務(wù)應(yīng)用并且通過服務(wù)部署管理器部署到服務(wù)平臺上。
7. 服務(wù)部署管理器:部署和部分管理一個或多個服務(wù)提供者提供的服務(wù)應(yīng)用。
8. 服務(wù)運行支持:支撐軟件和硬件,它們并不駐留在服務(wù)平臺服務(wù)器上,但是在運行服務(wù)應(yīng)用時需要它們。
9. 服務(wù)集成者:負責(zé)確保來自不同服務(wù)提供者的服務(wù)應(yīng)用的集成。
10. 服務(wù)開發(fā)者:開發(fā)服務(wù)應(yīng)用。
11. 制造商:制造服務(wù)平臺服務(wù)器
12. 擁有者:服務(wù)平臺服務(wù)器擁有者。
13. 收費提供者:接受帳戶信息,并且提供統(tǒng)一的帳單給服務(wù)消費者。
14. 網(wǎng)絡(luò)提供者:提供服務(wù)平臺的網(wǎng)絡(luò)鏈接。
15. 證書授權(quán):管理證書的組織,這些證書被用來鑒別系統(tǒng),個人和組織。
首先是制造商制造服務(wù)平臺服務(wù)器,擁有者從制造商處購買服務(wù)平臺服務(wù)器,網(wǎng)絡(luò)提供商提供服務(wù)平臺服務(wù)器和互聯(lián)網(wǎng)的接入。服務(wù)平臺的運營商使用網(wǎng)路提供者的接入基礎(chǔ)件接入服務(wù)平臺服務(wù)器,同時服務(wù)平臺經(jīng)營者控制著一個或多個運行在服務(wù)平臺服務(wù)器的服務(wù)平臺。另一方面,服務(wù)平臺經(jīng)營者許可服務(wù)部署管理器去部署服務(wù)應(yīng)用到服務(wù)平臺上。
其次服務(wù)開發(fā)者開發(fā)服務(wù)應(yīng)用,一個服務(wù)應(yīng)用可能包含多個服務(wù)包而這些服務(wù)包是真正運行在服務(wù)平臺上的。服務(wù)提供者從服務(wù)開發(fā)者處得到服務(wù)應(yīng)用并且可能會委托服務(wù)運行支撐系統(tǒng)去支撐該服務(wù)應(yīng)用在服務(wù)平臺上的運行。服務(wù)集成者將服務(wù)提供者獲取的服務(wù)應(yīng)用和支持系統(tǒng)集成起來由服務(wù)部署管理器部署到服務(wù)平臺上。
最后服務(wù)消費者訂閱服務(wù)提供者提供的服務(wù)。
更有意思的是這里還有一個服務(wù)用戶實體,從圖中可以看出服務(wù)消費者可以包含多個服務(wù)用戶,服務(wù)用戶是真正接受服務(wù)的實體。也就是說服務(wù)消費者是一個虛的實體,多個服務(wù)用戶可以消費同一個服務(wù)消費者訂閱的服務(wù)。這好比不同的人可以通過同一個電話打電話一樣。這無疑提高了OSGi規(guī)范靈活性。