OSGi关键技术及其应用研究*
2015-03-13胡佳慧吴思竹
胡佳慧 吴思竹 方 安
(中国医学科学院医学信息研究所 北京 100020)
OSGi关键技术及其应用研究*
胡佳慧 吴思竹 方 安
(中国医学科学院医学信息研究所 北京 100020)
总结和分析目前OSGi关键技术,包括分层模型、扩展功能、实现框架和技术特点,结合医疗卫生服务、科研平台建设和远程信息处理3个典型应用领域,举例说明OSGi在以服务为导向的现代信息应用系统开发中的独特优势。
OSGi;Bundle;模块化;面向服务;Java
1 引言
本文总结和分析OSGi关键技术,包括分层模型、扩展功能、实现框架和技术特点,结合医疗卫生服务、科研平台建设和远程信息处理这3个典型应用领域,举例说明OSGi在以服务为导向的现代信息应用系统开发中的独特优势。
2 OSGi关键技术
2.1 OSGi分层模型
2.1.1 OSGi分层模型[1]见图1,其中,OSGi中部署的最小单位为Bundle,指所开发的OSGi组件,其作为模块化的具体实现贯穿于OSGi框架的每一层。Bundle的本质为Jar包,其与Jar包的不同之处在于每个Bundle包含描述Bundle信息的Manifest .mf文本文件,描述信息可以包括Bundle的名称、描述、开发商、类路径、导入和导出包等。OSGi框架涉及服务、生命周期、模块、安全和运行环境,各层的功能分别为:服务层采用“发布-寻找-绑定”模式,为Bundle提供动态连接,包括注册服务、获取服务对象以及监听服务;生命周期管理是OSGi框架最重要的特征之一,生命周期层提供安装、启动、停止、更新以及卸载Bundle的应用程序接口(Application Program Interface,API);模块层负责处理Bundle间的关系,定义Bundle导入和导出代码的方式,其重要机制包括模块的类加载机制和模块间的包共享机制,通过这两个机制确保模块间的相互独立以及模块间信息的交互与共享;安全层负责处理安全方面的细节,为OSGi框架的每一层提供必要的安全保障;运行环境定义具体平台可获取的方法和类。
图1 OSGi分层模型
2.1.2 OSGi联盟先后发布的一系列规范[1]见表1,在标准化之初,OSGi是一个嵌入式Java和网络设备市场领域的开放组件服务规范。2000年5月OSGi联盟发布Release 1,旨在家庭和信息技术环境中实现基于组件的系统。自2005年起OSGi脱离嵌入式Java ME的约束,而将其关注领域转向Java SE和Java EE,发布了Release 4系列规范。此外,基于OSGi规范在嵌入式领域所取得的良好效果,为了使OSGi更适用于企业级应用,分布式OSGi逐渐受到业界的重视与关注。为了将OSGi扩展至云端应用,2012年6月OSGi联盟发布Release 5,以基于OSGi的模块仓库系统为建设目标,补充了仓储服务、子系统、命名空间和解析服务等API包。2014年6月在纽约召开的OSGi DevCon大会上,OSGi联盟发布了OSGi的最新版本Release 6。新的规范补充了语义化版本的角色、数据传输对象规范、服务范围和原型服务工厂等内容,开发者可更为简便地对其软件进行功能扩展,改善网络设备和企业软件服务的灵活性[8]。
表1 OSGi发展概览
2.2 分布式扩展功能
2.2.1 概述 OSGi设计之初是面向嵌入式开发领域,随着远程通信、物联网和云计算等新技术的兴起,为了更好地适应面向Java的动态模块化系统开发需求,需要对现有的OSGi技术进行分布式扩展。现有的OSGi分布式扩展功能主要包括远程处理、容错机制、自主计算以及实时开发。
2.2.2 远程处理 OSGi框架未区分本地服务和远程服务,远程OSGi(Remoting-OSGi,R-OSGi)[9]通过本地实例化Bundle,为运行中的远程服务生成透明的客户端代理,支持远程OSGi应用。在R-OSGi中,服务提供者无需为客户端代理保留任何代码,该方法尤其适用于运行在资源受限设备上的服务。通过采用动态服务代理、分布式的服务注册、网络与远程故障的映射以及类型注入4个基本步骤,R-OSGi提供了透明的远程调用,实现了对现有OSGi的无缝嵌入,OSGi应用无需修改即可被分发。
因即将作官而互相庆贺。多用于贬义。宋苏洵《嘉祐集》八《管仲论》:“一日无仲,则三子者可以弹冠相庆矣。”三子,指竖刁、易牙、开方三人。参见“弹冠”。 〔2〕1409
2.2.3 容错机制 OSGi应用大多需要可靠性支持,通过容错机制可增加系统的可靠性。容错OSGi(Fault-Tolerance OSGi,FT-OSGi)[10]是一种基于可靠性和可用性的OSGi扩展。FT-OSGi通过复制为基于OSGi的系统平台提供冗余,增强了现有OSGi系统平台的容错性。其中,复制的方法包括基于主-备(Primary-backup)方式主动式复制和基于状态-机器(State-machine)方式的被动式复制。
2.2.4 自主计算 由于OSGi具有动态性特征,组件可在任何时间被启动和停止,因此难以确定其所提供服务在特定时刻的可用性。基于OSGi的系统开发支持热部署,自主OSGi(Autonomic OSGi,A-OSGi)框架[11]利用OSGi平台的优势,支持OSGi应用的自主构建。该框架提供多种补充机制,包括有提取部署Bundle性能指标的能力、服务绑定的精确控制机制和运行时的信息收集机制、允许管理员定义OSGi应用的自主行为等。
2.2.5 实时开发 OSGi框架是基于标准的Java,而标准Java不适合开发实时系统。将OSGi框架扩展与Java实时规范(Real-Time Specification for Java,RTSJ)相结合,可设计OSGi框架的实时规范框架RT-OSGi[12],以支持可重构Java实时应用的动态部署。RT-OSGi应用可被重构,即在维持应用有效性的同时,可增加新的实时组件以及更新或者移除当前部署的组件,从而满足应用的高可用性要求。
2.3 实现框架
OSGi规范通过基础框架进行实现,主要实现框架包括Apache Felix、Eclipse Equinox、Spring DM以及Knopflerfish。其中,Felix所提供的服务最为全面,Equinox与Eclipse紧密结合,Spring DM可用于实现OSGi框架下基于Spring架构的应用,Knopflerfish是标准的OSGi实现框架,但是其发展较为缓慢。目前,Felix和Equinox已作为成熟的OSGi实现框架得到了广泛应用。此外,Apache和Eclipse还针对分布式OSGi扩展分别提出了Apache CXF和Eclipse ECF的参考实现框架。通过与这些框架技术结合,可将应用程序划分为多个模块单元,从而易于管理模块间的交叉依赖关系。
2.4 技术特点
2.4.1 技术概述 OSGi发展至今,已得到业界的广泛认可,这与其所具有的技术优势密不可分。OSGi的主要技术特点包括模块化、动态性、可扩展能力、可复用性、可管性以及安全性,见图2。
图2 OSGi技术特点
2.4.2 OSGi特点 OSGi描述了一个实现动态组件模型的Java模块化系统和服务平台,其模块化特点减少了软件的复杂度;且支持热插拔,无需停机重启,即可进行代码生命周期的动态管理,包括远程安装、启动、停止、更新和卸载以Bundle形式进行部署的应用或组件。OSGi支持细粒度、模块级的动态扩展,运行中的项目无需重新编译,以Bundle形式实现的新增功能即可生效。现有OSGi规范通过分布式扩展,更适用于基于Java的企业级应用系统的开发。此外,OSGi框架具有较好的可复用性,每个Bundle都是独立的可复用单元,有利于构建面向接口的应用程序架构。OSGi还支持对Bundle和应用的管理,包括包和Bundle的版本控制以及Bundle的配置、激活和部署等。与此同时,OSGi提供可扩展的安全模型,Java安全机制为该模型提供了基础。通过安全策略、权限管理和签名机制等,提供安全性保证。
3 典型应用
3.1 医疗卫生服务
3.1.1 辅助改善生活环境 大多数生物医学设备由于缺少对开放性和互操作性的支持,应用于更为广泛的医疗信息系统时受到限制。普适健康医疗(Pervasive Healthcare)可推动预防医学的发展,辅助改善生活环境(Ambient Assisted Living,AAL)[13]是普适健康医疗的一个代表。AAL设想了一个为居民提供适当监测和支持能力的理想家庭环境,在该环境中,分散部署在家里的嵌入式传感器可持续监测居民的行为和环境的变化,老年人可长期获得所有涉及个人、健康、社会和财务等方面的福利。随着人口健康和社会老龄化的发展趋势,采用OSGi为终端用户设计服务接口是医疗保健服务领域的一个研究方向。目前,可实现基于OSGi的住院治疗、监控以及私人训练等医疗保健服务平台。
3.1.2 SIXTH SIXTH[14-15]是一个基于OSGi框架的模块化可扩展传感器中间件,提供泛在感知的个人健康监测功能,由都柏林大学的CLARITY研究中心开发,旨在通过提取感知设备的连接细节,提供统一的感知资源的接口。SIXTH支持异构数据源,且是开放的,允许功能组件的置换,例如,数据分发策略可置换为满足应用需求的更为合适的解决方案。可扩展性是SIXTH的核心设计原则,通过OSGi可在运行时动态增加新功能。传感适配器作为即插即用组件,实现到传感器网络的连接。
3.1.3 AALuis AALuis(AAL User Interfaces)项目[16]由AAL Joint Programme、BMVIT、Programm Benefit、BMBF和ZonMw共同发起,采用适合所有设计(Design-for-all)的原则,利用OSGi平台的优势,为AAL提供丰富新颖的用户接口,以便于老年人获取和接受信息与通信技术(Information and Communication Technology,ICT)服务。由于服务可能采用不同类型的输入和输出设备或模式,该项目旨在已建成的基于OSGi的开放AAL中间件平台之上,构建服务、用户接口和连接层,为终端用户提供自由选择服务和接口的功能,从而有利于老年用户与各种服务之间的动态自适应和个性化交互。AALuis用户接口层保留各信息模式的变迁轨迹,以适应从抽象任务描述到用户接口的转换过程,引导用户以适当的方式进行交互。基于OSGi的AALuis层,服务提供者和用户接口的开发者可通过标准的方式简单集成新的或现有的解决方案,从而实现以用户为中心的动态个性化服务体验。
3.2 科技平台建设
3.2.1 STKOS 利用OSGi可进行科研平台建设,具有代表性的是科技知识组织系统(Science and Technology Knowledge Organization System,STKOS)的建设。STKOS的建立和完善需要多家单位相关人员的协同工作[17],这些不同行业的专业人员所处地域较为分散。OSGi因其模块化和组件式的系统开发优势,是分布式多用户协同工作的STKOS建设的理想选择,有利于消除相关科研人员协同工作过程中的时间和空间局限,加强不同科研单位之间的合作交流,提高科研平台建设的质量和效率。包括中国医学科学院、中国农业科学院以及中国科学院国家科学图书馆在内的多家科研单位,已基于OSGi进行了STKOS相关平台的设计、开发以及子系统的无缝集成,取得了较好的成效。
3.2.2 基于OSGi的STKOS建设案例 系统在开发、部署和应用的各个不同阶段,存在异地分布式开发、数据存取和共享、系统功能模块的复用和集成以及工作流的管理等问题。针对这些问题,赵胜钢等[18]将OSGi用于标准化的数据存取接口和功能集成接口设计,基于OSGi数据存储管理系统,实现了STKOS协同工作系统的开发和应用。鲜国建等[19]将OSGi用于STKOS知识服务应用示范系统的设计和开发,提出了基于OSGi的系统体系架构。针对不同参与单位独立设计开发的各应用示范子系统,完成了科技监测知识服务示范等子系统的模块化和组件式开发,实现了系统间的无缝集成和互操作,为相关信息资源和服务功能在各子系统间的广泛共享和交互提供了便利。OSGi为该体系的设计和开发提供了规范化的应用代码结构、灵活的动态应用部署以及完善的安全性保证。钱力等[20]将OSGi用于科技情报分析的工具集成服务,提出了相应的集成服务体系框架,设计了基于模块化动态管理的集成服务平台,将其用于世界科技发展态势的监测分析。其中,业务逻辑处理服务作为集成服务体系的核心层,承载着实际业务功能、算法和数据库服务等插件构建任务。所设计集成服务平台实现了数据资源与业务逻辑之间的物理隔离,通过OSGi的生命周期管理,新分析工具的部署无需影响其他服务。目前,国家“十二五”科技支撑计划项目课题“科技知识组织体系共享服务平台建设”的子课题3“科技知识组织体系(STKOS)相关工具集成服务系统建设”已成功将OSGi用于基于插件的知识组织工具集成系统建设,提出了工具集成框架和组件建设、STKOS各课题组提交知识组织工具等的规范要求。通过将知识组织工具封装为可控、可管的模块化可扩展插件,实现了各课题组间知识组织工具的共用和共享,有效提升了科研工作效率。
3.3 远程信息处理
3.3.1 Android/OSGi 将Android与OSGi框架相结合是基于云的远程信息处理的一个研究方向。车载Android/OSGi平台[21]综合了OSGi和Android两个平台的优势,具有远程管理、丰富的类共享、特有的车辆应用、安全策略、便捷的API管理以及开放的环境等优点。将云计算机制与Android/OSGi平台相结合,允许提供者向存储云上传其远程信息处理的Bundle。Android/OSGi平台的管理代理通过使用远程存储云,可同步更新其应用服务模块。随着移动设备的智能化发展,有必要将智能技术用于车辆管理领域。采用OSGi框架,基于Android的远程调用车辆服务(Android-based Remote Call Vehicle Service,ARC-VS)[22]为车辆管理提供开放接口支持。通过移动设备产生调用,完成基于OSGi的无人车辆的Android远程调用车辆服务,从而实现了支持移动设备的Android应用。
3.3.2 移动云计算OSGi 与传统的以互联网为中心的云服务模型相比,动态分布式服务环境中的移动服务管理较为复杂。移动云计算OSGi(Mobile Cloud Computing-OSGi,MCC-OSGi)[23]是一个基于OSGi的移动云服务模型,为移动设备提供动态有效的远程信息服务和资源接口。该方案采用OSGi和Android软件开发平台相结合的方式,将OSGi的Bundle作为基本的移动云服务组件,在云端和移动设备上构建R-OSGi。通过整合支持服务发现、选择和开发的R-OSGi组件,在移动云计算环境中搭建以服务为导向的OSGi体系架构。所构建的Bundle在基于Android的移动设备和云虚拟机上均能运行,且在不同平台间的转换和运行无兼容性问题。该方案验证了通过优化远程服务调用,OSGi可改善云服务,且R-OSGi支持平台即服务(Platform as a Service,PaaS)移动云的动态服务调用。
4 结语
OSGi在模块化、动态性、可扩展能力、可复用性和可管性等方面为基于Java的分布式系统开发提供了条件,其规范了Java应用程序的代码结构,节约了系统开发的时间,特别是由于动态模块化特征,OSGi已吸引了众多企业和大批科学研究工作者的重视。根据系统开发中不断更新的需求,OSGi规范及其技术范畴也在不断扩展,目前的主要方向有远程处理、容错机制、自主计算和实时开发。基于OSGi架构的系统开发应用案例层出不穷,较成熟的应用领域有医疗卫生服务、科研平台建设和远程信息处理。研究表明,基于模块化和组件式系统开发优势,OSGi可用于以服务为导向的医疗卫生和分布式多用户协同工作的科研平台建设,与此同时,将Android与OSGi框架相结合也是基于云的远程信息处理的方向。随着OSGi分布式扩展研究的深入以及新技术的涌现,OSGi将得到更大规模的推广及应用,特别是在以服务为导向的现代信息应用系统开发中将发挥出其更大的优势。
1 http://www.osgi.org[EB/OL].[2015-01-30].
2 吕茜茜, 杨翊. 科研信息管理系统的开发应用[J]. 医学信息学杂志, 2010, 31(12): 38-40.
3 高汉松, 肖凌, 许德玮, 等. 基于云计算的医疗大数据挖掘平台[J]. 医学信息学杂志, 2013, 34(5): 7-12.
4 赵一鸣, 左秀然, 杨国良. 基于医联体的远程会诊系统应用研究[J]. 医学信息学杂志, 2014, 35(10): 31-35.
5 钱庆, 李军莲, 李丹亚, 等. 面向用户的自建信息资源整合平台建设[J]. 医学信息学杂志, 2009, 30(1): 9-19.
6 代涛, 钱庆, 胡铁军, 等. “一站式”医学信息服务平台建设的理论与实践[J]. 医学信息学杂志, 2009, 30(1): 1-19.
7 郭振江, 王婷婷, 李卓群, 等. 基于远程医疗的慢性心血管疾病一体化诊疗平台设计和开发[J]. 医学信息学杂志, 2012, 33(12): 6-48.
8 http://www.eweek.com/blogs/first-read/osgi-core-release-6-now-available.html[EB/OL].[2015-01-30].
9 Rellermeyer JS, Alonso G, Roscoe T. R-OSGi: distributed applications through software modularization[C]. New York, USA:ACM/IFIP/USENIX International Conference on Middleware archive, 2007: 1-20.
10 Torrão C, Carvalho NA, Rodrigues L. FT-osgi: fault—tolerance extensions for the osgi Service Platform[J]. On the Move to Meaningful Internet Systems, 2009, (5870): 653-670.
11 Ferreira J, Leitão J, Rodrigues L. A-OSGi: a framework to support the construction of autonomic OSGi-based applications[J]. International Journal of Autonomous and Adaptive Communications Systems, 2012, 5(3): 292-310.
12 Richardson T, Wellings AJ. RT-OSGi: integrating the OSGi framework with the real-time specification for Java[M]/Distributed, Embedded and Real-time Java Systems, US:Springer, 2012.
13 http://www.aal-europe.eu/[EB/OL].[2015-01-30].
14 O’Hare GMP, Muldoon C, O’Grady MJ, et al. Sensor Web Interaction[J]. International Journal on Artificial Intelligence Tools, 2012, 21(2): 1-17.
15 Carr D, O’Grady MJ, O’Hare GMP, et al. SIXTH: a middleware for supporting ubiquitous sensing in Personal health monitoring[J]. Wireless Mobile Communication and Healthcare, 2013, (61): 421-428.
16 http://www.aaluis.eu/[EB/OL].[2015-01-30].
17 李亚子, 孙海霞, 蒋君, 等. 协同工作系统中用户角色的设计与实施[J]. 现代图书情报技术, 2013, (2): 77-81.
18 赵胜钢, 吴思竹, 钱庆, 等. 科技知识组织体系协同工作系统实现机制研究[J]. 数字图书馆论坛, 2012, (12): 7-12.
19 鲜国建, 赵瑞雪, 寇远涛, 等. 基于OSGi的知识服务应用示范系统体系架构设计与实践[J]. 数字图书馆论坛, 2012, (12): 38-43.
20 钱力, 张晓林, 李春旺, 等. 利用osgi的科技情报分析集成服务架构研究与应用[J]. 现代图书情报技术, 2014, (253): 62-70.
21 Chen MC, Chen JL, Chang TW. Android/OSGi-based Vehicular Network Management System[J]. Computer Communications, 2011, 34(2): 169-183.
22 Nam CS, Lee S, Shin DR. An Android Remote Call Vehicle Service for OSGi-based Unmanned Vehicle Using by a Mobile Device[J]. Intelligent Autonomous Systems, 2013, (193):123-132.
23 Houacine F, Bouzefrane S, Li L, etal. MCC-OSGi: an OSGi-based mobile cloud service model[C]. Mexico:IEEE Eleventh International Symposium on Autonomous Decentralized Systems (ISADS), 2013: 1-8.
敬告作者
《医学信息学杂志》网站现已开通,投稿作者请登录期刊网站:http:∥www.yxxxx.ac.cn,在线注册并投稿。
《医学信息学杂志》编辑部
OSGi Key Technology and the Applying Research
HUJia-hui,WUSi-zhu,Fang
An,InstituteofMedicalInformation,ChineseAcademyofMedicalSciences,Beijing100020,China
The paper summarizes and shares the current key technology of OSGi including the hierarchical model, the extended function, the realization framework and the technical features. It illustrates OSGi's special advantages in service-oriented development of the modern information application system by giving examples and combining the three typical application fields, namely medical and health service, scientific research platform construction and remote information processing.
OSGi;Bundle;Modular;Service-oriented;Java
2015-04-07
胡佳慧,博士,助理研究员,发表论文10篇;通讯作者:方安 。
国家“十二五”科技支撑计划项目课题“科技知识组织体系共享服务平台建设”(项目编号:2011BAH10B03)和其子课题3“科技知识组织体系(STKOS)相关工具集成服务系统建设”(项目编号:2011BAH10B03-1)。
R-058
A 〔DOI〕10.3969/j.issn.1673-6036.2015.08.011