MES系统客户端程序一体化自动更新方案研究

2018-09-18 09:57施晓廉李佳王建祥曹翔
数码设计 2018年2期
关键词:线程代码客户端

施晓廉,李佳,王建祥,曹翔

(上海无线电设备研究所,上海 200090)

引言

目前,在MES系统(Manufacture Execution System),即制造企业车间执行的信息化管理系统中,普遍采用 C/S模式。随着信息化程度的不断加深,客户端程序需要提供更多功能;同时,程序也会不可避免的出现bug,软件需要经常进行更新。由于部署在实际的生产环境中,为了便捷高效的实现各设备客户端程序的更新操作,必须采用自动更新系统。

目前应用的客户端更新系统中,更新方式主要是HTTP方式[7]、FTP方式[5-6,8]。大部分系统只解决了程序部署到服务器之后的问题[1-3,9],还需要人工进行版本控制及服务器部署,增加了不必要的工作量,也可能引入错误。另外,当更新模块本身需要更新时,系统无法进行自动操作,只能手动部署到客户端。

1 方案设计

本系统包括两个子系统,一部分是供开发人员使用的发布子系统,一部分是供软件操作人员使用的更新子系统,即狭义上的更新系统。图 1给出了系统简要工作流程。

图1 (a) 自动发布子系统

图1 (b) 自动更新子系统

在使用发布子系统之前,需要先对代码项目文件进行预处理,保证版本号能够动态修改。

当启动发布程序时,该程序会调用批处理脚本实现主程序的编译工作。编译完成后,发布程序会根据XML配置文件[4],通过web服务有选择性的上传文件到服务器上。

当操作人员在客户端启动主程序时,主程序会首先启动检查线程,对服务器的程序版本进行检测。当发现服务器的程序版本更高时,会启动更新程序,并退出。更新程序将高版本的文件下载完成后,重启主程序。

2 版本控制实现

程序采用 Tortoise SVN对代码进行管理,它提供了一个命令行工具SubWCRev.exe,能够读取运行目录的代码版本号并替换相应模板。本系统应用这个工具实现了编译时程序版本的控制。

为了使得程序的版本一直保持最新,需要在编译前提交代码。经过编译后,程序的版本就被替换成了当前代码版本,实现了版本控制。

3 发布及更新程序设计

3.1 发布程序设计

程序流程如下:

图2 发布程序流程

发布程序的主要功能是调用脚本,编译主程序,并根据配置文件上传压缩后的主程序及库文件,最后采用web方式上传各文件的版本信息及压缩包的MD5码。

3.2 更新程序设计

3.2.1 主程序内自检线程设计

当主程序开始运行时,首先启动一个自检线程。该线程会下载服务器上的版本记录文件,与本地模块版本进行对比,检查服务器是否有文件需要更新或有新增文件。当需要更新时将信息写入待更新记录文件中,并拉起更新程序,最后自身退出。线程流程如下:

图3 自检线程流程图

3.2.2 更新程序设计

程序流程如下:

图4 更新程序流程图

更新程序通过读取待更新列表记录文件,获取待更新模块列表。随后从服务器上下载相应的文件,存到临时文件夹中,校验通过后解压新文件,并替换原有文件。

3.2.3 模块互更新线程设计

在主程序确认更新已经完成,程序正常运行后,会启动一个线程下载记录文件,检查更新程序的版本是否与服务器上版本一致。当服务器上版本较高时,会在后台下载更新程序,并进行替换,实现了更新程序的自动更新。程序流程与3.2.2节所述类似。

4 结束语

本文设计了一套C#客户端下的一体化自动更新方案,包括版本控制、自动发布、自动更新与模块互更新。该方案覆盖了从代码编译到程序部署的整个流程,使得软件开发人员只需要关注代码功能本身,在软件开发完毕后提交代码以更新代码版本,随后运行该方案下的发布工具,即可实现开发端到使用端的自动更新。该方案大大提升了软件设计人员迭代开发的速度,方便车间操作人员更好的进行生产,具备很好的易用性。另外,该方案提供了更新程序的在线更新,即可以在线改变具体更新方式,便于后期功能的添加,而不需要重新部署,具有很强的可扩展性。最后,方案在移植时,只需要修改版本控制的部分即可,具备很好的可移植性。

[1]袁璟瑾.客户端软件自动更新的设计与实现[J].邢台职业技术学院学报,2012, 29(5): 93-95.

[2]朱建凯, 郑洪源, 丁秋林.基于VISUAL C++ 客户端程序自动更新的应用研究[J].计算机应用与软件, 2010, 27(2): 172-173,187.

[3]张志彬, 白剑坤.HIS系统客户端软件自动更新实现[J].医疗装备, 2009,22(3): 27-28.

[4]赵宏伟, 孙永清, 崔宇寅.一种软件自动更新方法[J].电脑知识与技术,2012, 8(1): 74-76.

[5]关磊.医院系统客户端的自动更新[J].医院数字化, 2016, 31(3): 108-110.

[6]赵卫绩, 刘井莲.基于FTP协议的客户端自动更新程序的设计与实现[J].科学技术与工程, 2010, 10(34): 8591-8593.

[7]李慧, 张剑霞.基于 HTTP协议下自动更新平台的构建[J].数字技术与应用, 2013, 20(7): 62.

[8]杨传伟, 孟凡荣.C/S客户端软件自动更新系统的设计与实现[J].计算机工程与设计, 2007, 28(18): 4561-4563.

[9]黄荣, 李刚荣, 李景波.“军字一号”信息系统通用自动更新程序的设计与实现[J].中国医疗设备, 2014, 29(3): 43-44.

猜你喜欢
线程代码客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
神秘的代码
一周机构净增(减)仓股前20名
一行代码玩完19亿元卫星
媒体客户端的发展策略与推广模式
近期连续上涨7天以上的股