李敏盛 蘇志偉 羅歡 李克文 黃慧
(廣西廣播電視無線傳播樞紐臺)
隨著業務的發展,廣西廣播電視各無線發射臺站舊有的主控程序需要添加或更改功能來滿足業務的需要,但是要同時更新升級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
在服務端界面窗口上選擇要備份的一個或多個臺站,點擊備份按鈕,服務端會判斷選擇的臺站是否在線,如果不在線,退出工作流程,并在窗口提示臺站不在線,如果在線,則下發備份指令??蛻舳耸盏絺浞葜噶詈螅瑥椭扑兄骺爻绦蛩诘哪夸洠⑦M行壓縮上傳至FTP服務器,最后將備份結果返回給客戶端,內容包括備份成功與否、完成時間、備份文件在FTP服務器中的路徑和文件名等。服務端收到返回結果后,將備份信息存儲至數據庫中,并在窗口顯示備份成功與否。圖4為備份流程。

圖4
為了以后更好的拓展客戶端的功能,客戶端增加了自我升級的功能。當編譯出新版本后,使用FTP客戶端軟件把新程序上傳至FTP服務器固定的目錄中,再將版本號更新在WEB服務器的一個頁面上??蛻舳嗣扛?0秒就會訪問該頁面,獲取最新版本號,當發現新的版本號后,會下載FTP服務器中的文件,進行自我更新并再次啟動。圖5為自我升級流程。

圖5
目前更換臺站主控電腦時,還需手動從FTP服務器中下載最近的備份程序來還原主控程序,下一步將在遠程升級客戶端增加自動還原功能,當程序啟動后,掃描該主控電腦指定目錄是否存在主控程序,如果不存在,則向服務端請求最新的備份路徑,然后從FTP服務器中下載,還原到指定的目錄下。

圖6 遠程升級程序客戶端

圖7 遠程升級程序服務端
本程序使用.net framework框架,C#語言編寫,其中使用了UDP傳輸協議進行服務端與客戶端的通訊,文件的上傳下載都是使用FTP服務器,目前該程序部署在全區三級以上臺站的主控電腦,已正常使用1年多,運行良好,為新遠程監控系統的更新改造提供了很好的助力。