面向国产化跨平台的网管软件设计与实现方法
2021-07-31熊廷坤姜永广赖增桂
郝 恒,熊廷坤,江 华,姜永广,赖增桂,武 明
(中国电子科技集团公司 第三十研究所,四川 成都 610041)
0 引 言
近年来,高新技术的迅速发展和广泛应用,快速推动了武器装备的更新和作战方式的演变,信息化战争将成为未来战争的基本形态[1]。为适配国产化自主可控需求,国产化跨平台软件研制成为热点和焦点。以网管系统为例,今后一定时间内,满足在Windows、银河麒麟等多种操作系统上跨平台运行的网管软件将成为一种发展趋势。
目前常见的国产化基础软件环境包括以中标、银河麒麟操作系统为代表的国产操作系统,以武汉达梦、人大金仓为代表的国产数据库管理系统,国产化基础硬件环境包括基于龙芯、飞腾CPU解决方案的各类终端和服务器设备[2]。本文围绕底层操作系统国产化、硬件平台强适配性、多场景灵活部署等发展需要[3],以“银河麒麟操作系统+飞腾CPU”的国产化解决方案为例,基于Qt5.9开发环境,提出了一种面向国产化跨平台的网管软件设计与实现方法。
1 国产化跨平台
1.1 硬件平台
飞腾公司是中国国防科技大学高性能处理器研究团队建立的企业,国防科技大学多年来在CPU领域积累了很雄厚的技术实力。飞腾公司在2016年推出了FT-2000(代号为“火星”),并在2017年流片了优化升级的FT-2000+芯片,后者是飞腾目前最顶尖也是性价比最高的芯片产品,其实测性能达到了2014年Intel至强E5主流服务器芯片的水平。FT-2000+芯片目前在服务器领域有较好的市场份额[4]。为确保软件研制,本课题采购了国产化计算机,处理器分别为飞腾2000和飞腾1500A;同时提供了非国产化的普通型台式计算机用于验证网管软件的跨平台能力。
1.2 操作系统
“银河麒麟”操作系统是由国防科技大学、中软公司、联想公司、浪潮集团和民族恒星公司合作研制的闭源服务器操作系统。此操作系统是“863”计划重大攻关科研项目,目标是打破国外操作系统的垄断,研发一套具有中国自主知识产权的服务器操作系统[4]。“银河麒麟”操作系统具有高安全性、高可用性、强实时性、可扩展性和软硬件适配性等特点,系统整体性能与国际主流Unix操作系统相当,部分性能指标以及实时性指标更好[5],已在国防、军工、政务、电力、航天、金融、电信、教育、大中型企业等行业或领域得到广泛应用。本文网管软件在设计时考虑了能够同时支持银河麒麟操作系统(以X86为代表的国际主流CPU和以飞腾为代表的国产安全CPU)和Windows 7操作系统的运行。
1.3 跨平台技术
跨平台是指编程语言、软件、硬件设备可以在多种平台上运行工作[4]。Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库[6]。不同于Java开发的软件“一次编译,到处运行”,Qt开发的软件具备“代码级跨平台”能力,实现源代码级别的复用,即“程序一次编写,随处编译运行”。跨平台意味着只需编写一次程序,在不同平台上无需改动或只需少许改动后再编译,就可以形成在不同平台上运行的版本。这种跨平台功能给开发者提供了极大的便利[6]。
本文基于Qt5.9开发环境,提出了一种面向国产化跨平台的网管软件设计与实现方法。该方法能够适配飞腾版银河麒麟操作系统+CPU(飞腾2000/飞腾1500A)。同时,该网管软件支持在X86版银河麒麟操作系统和Windows 7操作系统上进行开发、安装部署,其具备了“代码级跨平台”能力。
2 软件设计与实现
2.1 需求分析
随着国产化平台的不断发展,国产化硬件设备性能的不断提升,在国产化平台下开发及运行网管软件成为必然[8]。一般情况下,网管软件的主要功能由通信资源管理、网络拓扑管理、参数编辑/配置管理、设备管理、性能管理、故障/告警管理、连通性测试、网络状态监控和日志管理等模块组成。目前,国产化跨平台的网管软件除了实现其主要功能,还迫切需要解决以下三个方面的问题:
(1)操作系统及软件国产化,确保核心技术自主可控;
(2)适配国产化硬件环境,实现系统平稳跨越和灵活部署;
(3)应对未来国产化环境新需求,支撑网管系统快速开发、迭代与应用。
因此,针对上述问题和需求,有必要面向当前网管系统的典型应用场景,构建一种以国产操作系统为底层支撑,支持跨平台开发编译工具的网管软件,实现网管软件的多场景适配、多硬件平台复用、快速开发与灵活部署[3]。
2.2 软件设计
国产化跨平台的网管软件架构如图1所示。
图1 国产化跨平台的网管软件架构
在统一架构的共性基础平台框架上,国产化跨平台的网管软件设计考虑以下几点:
(1)基于Qt和“插件化”模块思想,快速构建松耦合的、可灵活扩展的国产化跨平台网管软件;实现了国产化网络管理功能的快速组装与迭代。
(2)具备“代码级”跨平台能力,支持Windows 7、银河麒麟操作系统(X86版和飞腾版)的开发、部署能力。
(3)具有多分辨率自适应能力,支持触摸屏操作。
(4)窗体重绘控制,对缩放和图形属性设置等窗体的基本操作均会造成窗体绘图事件函数的反复执行。通过优化重绘算法,降低CPU和内存使用资源的占用率。
(5)划分图层,实现界面分层绘制网络管理信息。
(6)支持多种界面样式,实现了多种界面风格,达到界面快速换肤的效果。
(7)适配不同Qt版本软件平台框架的集成环境,支持不同集成框架的消息发布/消息订阅处理。
(8)多种消息处理机制,基于主题进行事件的订阅和发布、消息sendMessage和receiveMessage和信号槽处理方式。
(9)日志记录,提供日志记录和异常捕获功能,用于记录和显示软件运行时产生的日志,捕获进程异常崩溃。
2.2 软件实现
Qt是一个多平台的C++图形用户界面应用程序框架,并且提供了大量的图形控件。开发人员以拖放的方式从控件面板添加相应的控件对象,通过控件属性编辑框,可以设定控件的标题、大小、位置、颜色、图片、字体、事件响应方式等属性。提供给用户的操作方式有:区域放大、缩小、图层上下级切换、拓扑连接绘图;鼠标右键出现菜单选项、通过键盘左右移动被管对象;各类按钮、信号事件和鼠标键盘事件响应等。
基于Qt5.9开发环境,实现了国产化跨平台的网管软件,该软件开发环境见表1所列。
表1 软件开发环境要求
国产化跨平台的网管软件实现主要由3部分组成,分别为软件运行框架、功能插件和配置文件/资源文件,如图2所示。采用“插件式”软件开发模式,国产化跨平台的网管软件功能可以按需扩展软件管理能力。
图2 国产化跨平台网络监控软件组成图
软件运行框架:软件运行的框架实例,为软件运行提供最基本的框架。
功能插件:软件功能模块的一种实现形式,按照约定的规范设计,具有标准调用接口,并独立封装为动态链接库DLL文件或SO文件。
配置文件/资源文件:各个插件的描述文件(.xml)、软件运行所需的脚本或其他参数配置文件、资源文件等。
2.3 跨平台软件适配的几点经验
在国产化应用环境构建初期,没有成熟的方法和经验可供借鉴,无法用现有的理论方法给予支撑和解决,需要在大量的应用和不断试错中总结提升[9]。因此,在国产化跨平台的网管软件实现过程中积累了大量的适配方法或开发经验,并高效解决了软硬件深度适配和多重适配问题,为后续软件规模化国产化替代进行了积极有效的技术路径尝试和经验积累。
基于Qt5.9开发环境,本次跨平台软件适配环境为“银河麒麟操作系统+CPU(FT1500A和2000)”。在跨平台软件适配过程中,形成了以下几点经验。
(1)不同Qt版本库差别引起软件集成后不能正常运行的问题:Qt4.8和Qt5.9开发的软件在同一台计算机共存,由于2个Qt版本本身区别很大,导致软件无法兼容运行,故网管软件运行时配置所需Qt5.9版本的库文件路径,不同软件集成框架各自使用各自的Qt库文件;如不同Qt版本软件有接口调用的Qt库文件,则单独编译一个QT5.9版本库文件供网管软件使用。
(2)不同操作系统定义的数据类型长度值不同,具体情况见表2所列。
表2 不同操作系统数据类型长度值的差别情况
(3)中文乱码显示或不识别(例如:中文名称,中文路径、中文日志等):由于UTF-8和GB2312编码格式对中文处理不一样,需采用成对匹配的编码格式进行中英文转换;例如toStdString().c_str()和QString::fromStdString()、toLocal8Bit().data()和 QString ::fromLocal8Bit()。
(4)严格的字母大小写敏感性(例如:头文件):在银河麒麟操作系统中,编译过程中对字母大小写非常敏感,需要严格的保持一致,才能确保编译通过。
(5)集成框架从桌面运行网管程序的启动路径有差别。实践表明,如果被集成软件通过QDir::currentPath()获取软件可执行文件所在路径,那么不同集成框架处理方式会导致被集成软件获取资源文件(例如图片和配置文件)路径存在差异(双击桌面快捷方式运行集成框架软件和程序所在文件夹目录运行EXE可执行文件)。考虑兼容不同集成框架环境,可将QDir::currentPath( )修改为QApplication ::applicationDirPath()或 QCoreApplication ::applicationDirPath( )获取软件可执行文件路径。修改后,不同集成框架的软件启动方式对被集成软件获取其资源文件路径无影响。
3 结 语
在网络管理、安全管理、运维控制等领域,为满足国产自主可控需求,适应当前及未来国产化发展趋势,本文提出了基于“银河麒麟操作系统+飞腾CPU”国产自主环境的网管软件设计与实现方法。通过项目研制结果表明,国产化跨平台的网管软件功能和性能均满足指标要求,突破了多种国产化跨平台环境适配的关键技术,达到了适配多种国产化操作系统的能力;有效提升了目前装备软件国产化水平,具有较高的工程应用价值[1]。后续将在此研究基础上丰富网络管理内容,使其支持自动化部署[10],并提高代码复用率,进一步降低软件维护成本。