李朋云 陈金勇 张 琦(中国电子科技集团公司第五十四研究所 河北 石家庄 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