李朋云 陳金勇 張 琦(中國電子科技集團公司第五十四研究所 河北 石家莊 050081)
基于OSGi的面向服務軟件體系結構設計
李朋云 陳金勇 張 琦
(中國電子科技集團公司第五十四研究所 河北 石家莊 050081)
為了實現企業級應用的基礎架構、開發方式和部署方式的統一,文中研究了OSGi服務組件模型。OSGi提供了一種面向服務的組件開發框架,具有高度模塊化和動態化特點。根據SOA架構思想和OSGi框架特性,設計一種基于OSGi規范的面向服務的軟件體系結構,開發了統一服務架構平臺,并通過組件化、圖形化為設計、開發及調試等過程提供全生命周期的支持,實現了企業應用即插即用的模塊化管理,能夠有效提高軟件模塊復用能力和復用程度。
OSGi SOA 軟件體系架構 統一服務結構平臺
近幾年,IT企業的現狀是各種各樣的操作系統、應用軟件、系統軟件和應用基礎結構相互交錯,并且軟件規模龐大及應用環境多樣,而傳統的軟件結構具有搭建復雜、不易擴展和重用的特點,這些狀況使框架的概念得到廣泛應用。SOA憑借其松耦合的特性,使企業可以按照模塊化的方式來添加和更新服務,以解決新的業務需求,雖然基于SOA實現的架構多種多樣,但都具有SOA的基本特征:松散耦合、可重用、接口明確、服務獨立和基于開放標準[1-4]。
軟件開發由面向過程轉變為面向對象,并形成了企業級的開發模式,其中有代表性的有J2EE和.NET兩大體系。在面向對象模型中,對于應用程序的不同組件,他們之間的功能和結構是緊耦合的,當軟件功能發生改變時就需要重新進行開發。OSGi標準規范為面向組件開發提供了一種動態可部署的基礎框架環境[5-8]。OSGi框架通過注冊、查詢和綁定服務,實現了服務提供和消費的分類管理,真正實現了松耦合高內聚和"即插即用"的目標[9-12]。
本文根據SOA架構思想和OSGi框架特性,設計了一種基于OSGi規范的面向服務的軟件體系結構,實現企業應用的的基礎架構、開發方式和部署方式的統一,從而實現企業系統開發的模塊化,降低了模塊間的耦合度,有效提高模塊服用能力、縮短開發周期和提高開發質量等。
Bundle是OSGi框架中最基本的單位,即模塊,包括一個配置清單(Manifest)和一些java類的組合。在基于OSGi規范面向服務的軟件體系結構設計中,組件是基于OSGi Bundle來實現的。首先根據OSGi框架開發出所需組件,然后在OSGi框架上啟動執行。在OSGi標準規范中獨立的模塊被定義為基本Sercice,同一Service可出現在不同的Bundle中。多個服務組成具有特殊功能服務的Bundle,并向其他Bundle提供服務。OSGi框架的注冊服務不僅能使Bundle之間可以服務,而且能保證其安全性。本文在此基礎上對Bundle進行擴展性設計并遵循OSGi規范,組件是一個物理可部署單元,包含大量服務組件。Bundle中的服務模型如圖1所示。

圖1 服務組件模型
Bundle的服務模型從形式上可以分為:本地服務、遠程服務、事件發布、事件監聽、服務屬性、依賴服務、容器上下文和實現依賴8個部分。其中:①本地服務接口:將服務注冊到服務注冊表,然后對外提供本地服務;②遠程服務接口:將服務注冊到UDDI中,然后對外提供的遠程服務;③事件發布接口:向微內核事件中心發布服務組件的狀態;事件監聽接口:④對微內核進行監聽并作出反應;⑤服務屬性:動態改變組件屬性;⑥實現依賴:服務組件實現部分依賴的資源或類庫;⑦依賴服務接口:表示服務組件實現部分依賴的服務;⑧容器上下文接口:采用IOC模式來實現容器上下文注入。
基于OSGi規范的服務組件特性:①模塊化:易于理解,模塊化會涉及將大型的系統拆分為單獨的物理實體;②獨立性:各模塊之間是相互獨立的,具有獨立的生命周期;③高內聚:其他模塊只能訪問該組件對外提供的功能;④動態化:能動態地增加、更新或刪除模塊,其他模塊功能不受影響。
在面向SOA的體系結構中,SOA的組件包括:①服務提供者:將服務發布到服務注冊中心,并控制對服務的訪問以及服務維護;②服務消費者:實現服務的查找和調用;③服務注冊者:存儲和管理服務信息,這三者之間的關系如圖2所示。

圖2 面向服務的體系架構
主要操作有:服務提供者創建一個服務,并向服務代理者公布其接口信息。服務代理者負責向任何潛在的服務要求者提供可用的服務接口和執行訪問信息。服務請求者在服務注冊中心查找需要的,然后綁定到服務提供者,并向服務提供者請求服務繼而得到響應。
在軟件體系結構中,服務組件層和編排層對SOA架構均有體現,如圖3所示。

圖3 基于OSGi規范的體系結構設計
根據SOA架構理念,基于OSGi框架規范的體系結構忽略服務的粒度,在本文設計的軟件體系結構中服務組件層關注細粒度的服務,服務之間是松耦合狀態,并通過注冊表交互。而服務編排層關注粗粒度的服務,并且通過遠程注冊表供其他應用調用,并且提升了系統的擴展性,粗粒度的服務是由細粒度的服務組成的。
根據OSGi標準規范,開發了一種統一服務結構平臺,如圖4所示。平臺采用SOA面向服務的架構和標準規范,并且基于OSGi、.net和Eclipse等開放的技術和平臺,通過組件化、圖形化為軟件系統的設計、開發、調試、運行和維護提供全生命周期的支持。

圖4 統一服務架構平臺
其中統一服務架構平臺的基本運行環境采用微內核機制,可以提高服務組件可靠性,并且集成標準Web容器等組件。集成開發環境主要提供組件和服務的全生命周期支持,監控管理通過圖形化實時監控平臺的運行環境,監聽組件狀態,便于系統開發管理人員依據狀態變量進行調試和診斷。
組件倉庫是用來管理和存儲組件,以便于組件的復用,為以后系統的開發提供便利,以此提供組件和系統的復用度和開發效率。業務規則引擎負責對企業的業務流程進行管理。業務規則引擎提供了業務流程的定義、部署、運行、監控和管理等功能。UDDI是SOA基礎的基本構件,在同一服務架構平臺中注冊和查找服務,并對業務組件遠程服務接口進行管理。
本文依據OSGi規范的思想和技術特性,將SOA中的服務封裝成模塊,建立一個基于OSGi面向服務的軟件體系結構,并在此基礎上建立統一服務架構平臺。通過使用統一服務架構平臺,可將軟件產品或系統設計成熱部署、可插拔、穩定和可擴展的模塊,提高開發、測試效率和復用率,并降低開發成本。今后統一服務架構平臺也可以同云平臺進行結合,統一部署接口,能夠使云計算真正落地。
[1]HU J,KHALIL I,HAN S,et al.Seamless Intergration of Dependability and Security Conception SOA:A Feedback Control System Based Framework and Taxonomy[J].Journal of Network and Computer Applications,2011,34(4):1150-1159.
[2]ZMUDA D,PSIUK M,ZIELINSKI K.Dynamic Monitoring Framework for the SOA Execution Environment[J].Procedia Computer-assisted environment for understanding geometry theorem proving problems and making conjectures,2009,3(3): 231-245.
[3]王海林.SWRL推理規則在平面幾何證明中的應用[J].計算機技術與發展,2010,20(9):217-221.
[4]常建鵬,趙克,億珍珍,等.初中幾何專家系統中的知識獲取及實現[J].計算機技術與發展,2008,18(7):156-159.
[5]IWANE N,TAKEUCHI A,OTSUKI S.A Network Intelligent Educational System for Arithmetic Word Problems[J].Systems and Computers in Japan,1997,28(10):30-39.
[6]DELLAROSA D.A Computer Simulation of Children'S Arithmetic Word Problem Solving[J].Behavior Research Methods,Instruments&Computer,1986,18(2):147-154.
[7]WONG W K,HSU S C,WU S H.LIM-G:Learner-Initiating Instruction Model Based on Cognitive Knowledge for Geometry Word Problem Comprehension[J].Computer& Education,2007,48(4):582-601.
[8]程 志.小學算術應用題自動解答系統-以整數一、二步和分數基本應用題為例[D].北京:北京師范大學,2008.
[9]俞士汶.計算語言學概論[M].北京:商務印書館,2007.
[10]KINTSCH W,GREENO J G.Understanding and Solving Word Arithmetic Problems[J].Psychology Review,1985(92): 109-129.
[11]MA Yu-hui,TAN Kai,SHAO Li-min,et al.Constructing the Representation Model of Arithmetic Word Problems for Intelligent Tutoring System,2011[C].Singapore:Computer Science&Education,2011.
[12]朱曉亞.現代漢語句模研究[M].北京:北京大學出版社, 2000.
Design on Service Oriented Software Architecture Based on OSGi
LI Peng-yun CHEN Jin-yong ZHANG Qi
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
In order to realize the unification of infrastructure,development mode and deployment mode for enterprise application,this paper studies the OSGi service component model.The OSGi provides a service oriented component development framework,which has such characteristics as high modularity and dynamization.On the basis of SOA idea and OSGi framework feature,this paper designs a service oriented software architecture based on OSGi specification,develops a unified architecture platform,and provides the whole life cycle support for the design,development and debugging processes through modularization and graphical mode.The plug and play modularization management of enterprise application is realized,which can effectively improve the reuse capability and degree of software module.
OSGi;SOA;software architecture;unified service architecture platform
TP92
A
1008-1739(2014)22-61-3
定稿日期:2014-10-26