2. 中国山西 030025 太原大陆裂谷动力学国家野外科学观测研究站
2. National Continental Rift Valley Dynamics Observatory of Taiyuan, Shanxi Province 030025, China
目前,地震前兆业务软件种类较多 (胡玉良等,2015),为了提高地震前兆值班人员工作效率,笔者基于微软VS2010环境,使用C#语言研制《山西前兆台网日常运行管理软件》,在山西地震前兆数据智能监控分析软件的基础上进行全面改进 (程冬焱等,2012),从而提高地震前兆日常运行管理效率 (胡玉良等,2013)。软件部署在山西省地震局和各专业地震台站,当新版本发布时,系统维护人员需重新安装软件或手动替换相关文件,工作量较大,由于软件未及时更新导致版本不统一,影响地震前兆工作正常开展,有必要设计一种自动升级方案,实现山西地震前兆台网日常运行管理软件的自动升级。
1 方案设计自动升级方案包含主程序和升级程序。启动主程序时,首先启动更新程序,下载服务端UpdateList. xml文件至本地临时文件夹,通过比较本地UpdateList. xml中各文件的版本信息和服务端UpdateList. xml中各文件的版本信息,判断是否有新版本,有新版本即从服务端下载新文件,替换本地文件,并更新客户端版本信息,重新启动主程序。UpdateList. xml文件格式如下
< ?xml version="1.0" encoding="gb2312"? > //xml版本号
< AutoUpdater >
< description>Application autoUpdate < /description >
< Updater>
< Url>http://10.14.2.162/Update/ < /Url > //升级文件所在服务器端的网址
< LastUpdateTime>2016-3-15 < /LastUpdateTime > //升级文件的更新日期
< /Updater>
< Files>
< File Ver="1.0.0.1" Name="test_oracle.exe" / > //升级文件的版本号及名称
< File Ver="1.0.0.1" Name="山西SX_InstrIp.xml" / > //升级文件的版本号及名称
< File Ver="1.0.0.1" Name="山西SX_InstrIpSchema.xml" / > //升级文件的版本号及名称
< File Ver="1.0.0.1" Name="山西SX_InstrItem.xml" / > //升级文件的版本号及名称
< File Ver="1.0.0.1" Name="山西SX_InstrItemSchema.xml" / > //升级文件的版本号及名称
< /Files >
< /AutoUpdater >
从以上xml文档可知升级文档所在服务器端地址、升级文档更新日期、需要升级文件版本号及文件列表。
1.1 服务端设计服务端用于保存升级文件,同时提供Web服务供升级程序下载升级文件。本文基于Windows Web Server 2008操作系统构建1台Web服务器,主要步骤如下:① 在本地磁盘新建一个Update文件夹,复制需升级的文件至Update文件夹;② 打开“服务器管理器”,勾选“Web服务器 (IIS)”,开始安装IIS;③ 安装完成后,点击开始—管理工具—信息IIS管理器;④ 右键点击默认网址,添加虚拟目录,添加物理路径 (Update文件夹)(图 1);⑤ 启用目录浏览功能;重新启动网站,点击http://10.14.2.162/Update/,如果出现图 2,证明Web服务端搭建成功。
界面及流程。升级程序基于微软VS2010开发环境 (C#语言) 进行开发,主要功能是实现主程序的在线升级,流程见图 3,软件界面见图 4。
实现程序。升级程序基于http协议,从Web服务端下载UpdateList.xml配置文件,核心代码如下
WebRequest req = WebRequest.Create (this.UpdaterUrl); //初始化WebRequest实例
WebResponse res = req.GetResponse (); //返回对Internet请求的响应
if (res.ContentLength > 0) //文件存在
{
try
{
WebClient wClient = new WebClient (); //初始化WebClient
wClient.DownloadFile (this.UpdaterUrl, serverXmlFile); //通过WebClient类的DownloadFile方法下载文件
}
catch
{return; }
}
其他文件下载方式与此类似。为了提高程序响应速度和资源利用率,采用多线程方式下载升级文件,核心代码如下
Thread threadDown=new Thread (new ThreadStart (DownUpdateFile)); //定义ThreadStart类型的委托
threadDown.IsBackground = true; //指示该线程为后台线程
threadDown.Start (); //启动线程
2 应用效果Web服务器部署在山西省地震局,升级程序随同山西地震前兆台网日常运行管理软件部署在省地震局和专业台站。自动升级方案的实现,促使软件升级方式由人工转变为自动化,减少系统维护人员软件升级工作量,更好地促进山西地震前兆台网日常工作的顺利开展。
3 结束语山西地震前兆台网日常进行管理软件自动升级解决方案,针对性解决了该运行管理软件升级难的问题,升级过程简单明了,能够在第一时间提醒用户升级软件版本,保证了山西地震前兆台网日常运行管理软件版本的一致性。在此基础上,将此系统与山西地震前兆技术的自动化管理相结合 (穆慧敏等,2016),将能极大地提高山西前兆台网仪器及系统运行维护的水平。下一步将基于该解决方案实现对地震前兆台网应急服务软件的自动升级。
程冬焱, 胡玉良, 穆慧敏, 等. 山西地震前兆数据智能监控分析软件在山西前兆台网中的应用[J]. 山西地震, 2012(3): 21-23. | |
胡玉良, 程冬焱, 李惠玲. 虚拟技术在地震前兆技术系统中的应用[J]. 震灾防御技术, 2015, 10(3): 688-694. DOI:10.11899/zzfy20150324 | |
胡玉良, 程冬焱, 穆慧敏, 等. 山西地震前兆台网系统运行维护[J]. 山西地震, 2013(3): 44-48. | |
胡玉良, 闫民正, 程冬焱, 等. 山西市县地震前兆数据共享软件设计[J]. 地震地磁观测与研究, 2015, 36(1): 140-144. | |
穆慧敏, 胡玉良, 程冬焱, 等. 山西地震前兆技术系统管理方案的设计及实现[J]. 山西地震, 2016(2): 18-21. |