第一章 引言
OSGi(Open Service Gateway Initiative)最初的目的就是為各種嵌入式設備提供通用的軟件運行平台,即可以屏蔽設備操作系統與硬件區別的中間件平台。PC基本上被 Wintel架構壟斷,運行在PC上的應用程序完全可以在另一台PC上運行;但對於其他設備來說就不同,它們的硬件平台可能完全不同,其操作系統也是來自不同廠商,所以任何設備上的應用程序都需要定制,於是就產生了對中間件平台的需求。
OSGi並不是專為家庭網絡而制定的,除了住宅網關,像車載電腦等其他移動嵌入式設備也都可以通過OSGi接入Internet,獲取不同的應用服務。它為服務供應商、軟件供應商、網關開發人員以及設備供應商提供了一個開放、通用的架構,使它們能互動地開發、部署和管理服務。其軟件環境基於Sun的 Java虛擬機,並不涉及具體的連接協議。對於任何新設備,它都能夠靈活地將其納入現有網絡。可以使用OSGi的對象包括各種數字和模擬的機頂盒、服務網關、有線電視電纜調制解調器、消費類電子產品、PC、工業計算機、汽車等。
因為OSGi基於JAVA技術,而JAVA最大的好處就是平台無關性。在不同類型的住宅網關設備上都可以實現OSGi軟件。而且OSGi規范可以與各種設備訪問標准橋接(如圖1所示),比如遵循OSGi的系統可以很好地部署和管理Jini服務,它可以提供Jini設備與服務提供商之間的交互。對於像 HAVi、UPnP等基於非Java技術的標准和規范,OSGi也可以提供與它們溝通的橋梁。
第二章 OSGi規范介紹
2.1 OSGi規范的體系結構
在OSGi規范中提供了一個參考的體系架構,也基本上體現了OSGi的設計初衷。
OSGi的體系架構是基於這樣一個模型的:經營者管理著一個潛在的巨大的服務網絡平台。OSGi規范假設這個服務平台是完全被這個經營者控制,並且經營者使用該服務平台去運行來自不同服務提供者提供的服務。然而這只是一個場景,還有其他模型,例如PC機的部署,工業應用(如,移動電話基站是一個管理中心完全控制著各個方面),中間件模型等。OSGi最廣泛的應用是在網絡化的服務。除了參考模型之外,規范之中還提到了其他的一些模型。請參考OSGi 3.0規范.
2.1.1 OSGi參考體系架構的特點
1. 商業驅動:經營者的觀點驅動OSGi的體系架構。
2. 完美:體系架構必須是足夠完善和詳細的,以致允許開發商生產出健壯的產品。
3. 不受限的:由於經營者所操作的服務平台在性能和網絡環境的變化是非常大的。
4. 開放:標准不是為一個具體的系統而設計的,OSGi參考體系架構必須考慮和支持許多不同的場景。
2.1.2 OSGi參考體系架構所涉及到實體
1. 服務平台:一個Java虛擬機的實例,一個OSGi框架結構,和運行著的服務包的集合。
2. 服務平台服務器(SPS):駐留一個或多個服務平台的硬件。
3. 運營商:掌控許多服務平台的組織。
4. 服務應用:一套軟件包,文檔和支撐軟件所組合起來的應用,這些應用向終端用戶提供服務。
5. 服務用戶:獲取服務應用服務的用戶。
6. 服務提供者:開發服務應用並且通過服務部署管理器部署到服務平台上。
7. 服務部署管理器:部署和部分管理一個或多個服務提供者提供的服務應用。
8. 服務運行支持:支撐軟件和硬件,它們並不駐留在服務平台服務器上,但是在運行服務應用時需要它們。
9. 服務集成者:負責確保來自不同服務提供者的服務應用的集成。
10. 服務開發者:開發服務應用。
11. 制造商:制造服務平台服務器。
12. 擁有者:服務平台服務器擁有者。
13. 收費提供者:接受帳戶信息,並且提供統一的帳單給服務消費者。
14. 網絡提供者:提供服務平台的網絡鏈接。
15. 證書授權:管理證書的組織,這些證書被用來鑒別系統,個人和組織。
首先是制造商制造服務平台服務器,擁有者從制造商處購買服務平台服務器,網絡提供商提供服務平台服務器和互聯網的接入。服務平台的運營商使用網路提供者的接入基礎件接入服務平台服務器,同時服務平台經營者控制著一個或多個運行在服務平台服務器的服務平台。另一方面,服務平台經營者許可服務部署管理器去部署服務應用到服務平台上。
其次服務開發者開發服務應用,一個服務應用可能包含多個服務包而這些服務包是真正運行在服務平台上的。服務提供者從服務開發者處得到服務應用並且可能會委托服務運行支撐系統去支撐該服務應用在服務平台上的運行。服務集成者將服務提供者獲取的服務應用和支持系統集成起來由服務部署管理器部署到服務平台上。
最後服務消費者訂閱服務提供者提供的服務。
更有意思的是這裡還有一個服務用戶實體,從圖中可以看出服務消費者可以包含多個服務用戶,服務用戶是真正接受服務的實體。也就是說服務消費者是一個虛的實體,多個服務用戶可以消費同一個服務消費者訂閱的服務。這好比不同的人可以通過同一個電話打電話一樣。這無疑提高了OSGi規范靈活性。