李敏盛 苏志伟 罗欢 李克文 黄慧
(广西广播电视无线传播枢纽台)
随着业务的发展,广西广播电视各无线发射台站旧有的主控程序需要添加或更改功能来满足业务的需要,但是要同时更新升级100多个台站的主控程序需要一个一个的进入台站主控电脑中,进行更换旧有程序;各个台站主控程序的设置项配置都是不一样的,所以需要单独每个台站进行备份。以前做备份需要一个一个进入台站通过复制、粘贴的笨办法来备份主控程序,这种升级和备份方法非常不便,既浪费人力又浪费时间,为此我们设计和编写了能实现在数据中心服务端一键升级台站主控的程序,同时实现自动定时或手动备份功能。
本方案的设计思路是在数据中心的一台服务器中部署远程升级的服务端程序,在另外一台服务器中部署FTP和WEB服务,然后在台站的主控电脑中部署远程升级的客户端程序。数据中心服务器使用windows server 2012系统,远程升级程序的服务端和客户端都是使用.net framework框架,C#语言编写的WinForm窗口程序。服务端和客户端使用UDP协议进行通信。图1为系统架构图。
图1
远程升级程序客户端随主控电脑系统启动后,会立即自动连接服务端程序,如果连接不成功,会以10秒为周期再次连接,直到连接成功为止,服务端接收到客户端的连接信息后,会以列表的形式保存各个客户端的信息,包括台站编号,Socket端口,上报时间等。为了确保双方的通讯状态,客户端每隔10秒会向服务端发送心跳包,服务端接收到心跳包后,会更新客户端的Socket端口和上报时间,确保服务端下发指令时,客户端能正常收到。图2为客户端与服务端的UDP通讯连接流程。
图2
在服务端的窗口界面上选择要更新的一个或多个程序,点击上传,服务端就会读取文件,然后上传至FTP服务器,上传成功后,服务端记录下上传的路径和文件名;然后选择一个或多个台站,点击更新,服务端就会先判断该台站的远程升级客户端是否在线,如果不在线,退出升级流程,并在窗口中提示,如果在线,就会下发升级指令,内容包括下发时间、要升级的主控程序列表以及该主控程序在FTP服务中的路径和文件名等信息。客户端收到升级指令后,先判断要升级的主控程序在该台站中是否使用,如果没有使用则返回信息给服务端,如果使用,则会连接FTP服务器下载所需要的文件,下载成功后,关闭当前主控程序,然后覆盖旧有程序,覆盖成功后,返回更新成功信息给服务端。服务端收到返回信息,在窗口显示升级结果。图3服务端下发升级指令到客户端的工作流程。
图3
在服务端界面窗口上选择要备份的一个或多个台站,点击备份按钮,服务端会判断选择的台站是否在线,如果不在线,退出工作流程,并在窗口提示台站不在线,如果在线,则下发备份指令。客户端收到备份指令后,复制所有主控程序所在的目录,并进行压缩上传至FTP服务器,最后将备份结果返回给客户端,内容包括备份成功与否、完成时间、备份文件在FTP服务器中的路径和文件名等。服务端收到返回结果后,将备份信息存储至数据库中,并在窗口显示备份成功与否。图4为备份流程。
图4
为了以后更好的拓展客户端的功能,客户端增加了自我升级的功能。当编译出新版本后,使用FTP客户端软件把新程序上传至FTP服务器固定的目录中,再将版本号更新在WEB服务器的一个页面上。客户端每隔30秒就会访问该页面,获取最新版本号,当发现新的版本号后,会下载FTP服务器中的文件,进行自我更新并再次启动。图5为自我升级流程。
图5
目前更换台站主控电脑时,还需手动从FTP服务器中下载最近的备份程序来还原主控程序,下一步将在远程升级客户端增加自动还原功能,当程序启动后,扫描该主控电脑指定目录是否存在主控程序,如果不存在,则向服务端请求最新的备份路径,然后从FTP服务器中下载,还原到指定的目录下。
图6 远程升级程序客户端
图7 远程升级程序服务端
本程序使用.net framework框架,C#语言编写,其中使用了UDP传输协议进行服务端与客户端的通讯,文件的上传下载都是使用FTP服务器,目前该程序部署在全区三级以上台站的主控电脑,已正常使用1年多,运行良好,为新远程监控系统的更新改造提供了很好的助力。