李敏盛 蘇志偉 羅歡 李克文 黃慧
(廣西廣播電視無線傳播樞紐臺(tái))
隨著業(yè)務(wù)的發(fā)展,廣西廣播電視各無線發(fā)射臺(tái)站舊有的主控程序需要添加或更改功能來滿足業(yè)務(wù)的需要,但是要同時(shí)更新升級(jí)100多個(gè)臺(tái)站的主控程序需要一個(gè)一個(gè)的進(jìn)入臺(tái)站主控電腦中,進(jìn)行更換舊有程序;各個(gè)臺(tái)站主控程序的設(shè)置項(xiàng)配置都是不一樣的,所以需要單獨(dú)每個(gè)臺(tái)站進(jìn)行備份。以前做備份需要一個(gè)一個(gè)進(jìn)入臺(tái)站通過復(fù)制、粘貼的笨辦法來備份主控程序,這種升級(jí)和備份方法非常不便,既浪費(fèi)人力又浪費(fèi)時(shí)間,為此我們?cè)O(shè)計(jì)和編寫了能實(shí)現(xiàn)在數(shù)據(jù)中心服務(wù)端一鍵升級(jí)臺(tái)站主控的程序,同時(shí)實(shí)現(xiàn)自動(dòng)定時(shí)或手動(dòng)備份功能。
本方案的設(shè)計(jì)思路是在數(shù)據(jù)中心的一臺(tái)服務(wù)器中部署遠(yuǎn)程升級(jí)的服務(wù)端程序,在另外一臺(tái)服務(wù)器中部署FTP和WEB服務(wù),然后在臺(tái)站的主控電腦中部署遠(yuǎn)程升級(jí)的客戶端程序。數(shù)據(jù)中心服務(wù)器使用windows server 2012系統(tǒng),遠(yuǎn)程升級(jí)程序的服務(wù)端和客戶端都是使用.net framework框架,C#語(yǔ)言編寫的WinForm窗口程序。服務(wù)端和客戶端使用UDP協(xié)議進(jìn)行通信。圖1為系統(tǒng)架構(gòu)圖。
圖1
遠(yuǎn)程升級(jí)程序客戶端隨主控電腦系統(tǒng)啟動(dòng)后,會(huì)立即自動(dòng)連接服務(wù)端程序,如果連接不成功,會(huì)以10秒為周期再次連接,直到連接成功為止,服務(wù)端接收到客戶端的連接信息后,會(huì)以列表的形式保存各個(gè)客戶端的信息,包括臺(tái)站編號(hào),Socket端口,上報(bào)時(shí)間等。為了確保雙方的通訊狀態(tài),客戶端每隔10秒會(huì)向服務(wù)端發(fā)送心跳包,服務(wù)端接收到心跳包后,會(huì)更新客戶端的Socket端口和上報(bào)時(shí)間,確保服務(wù)端下發(fā)指令時(shí),客戶端能正常收到。圖2為客戶端與服務(wù)端的UDP通訊連接流程。
圖2
在服務(wù)端的窗口界面上選擇要更新的一個(gè)或多個(gè)程序,點(diǎn)擊上傳,服務(wù)端就會(huì)讀取文件,然后上傳至FTP服務(wù)器,上傳成功后,服務(wù)端記錄下上傳的路徑和文件名;然后選擇一個(gè)或多個(gè)臺(tái)站,點(diǎn)擊更新,服務(wù)端就會(huì)先判斷該臺(tái)站的遠(yuǎn)程升級(jí)客戶端是否在線,如果不在線,退出升級(jí)流程,并在窗口中提示,如果在線,就會(huì)下發(fā)升級(jí)指令,內(nèi)容包括下發(fā)時(shí)間、要升級(jí)的主控程序列表以及該主控程序在FTP服務(wù)中的路徑和文件名等信息??蛻舳耸盏缴?jí)指令后,先判斷要升級(jí)的主控程序在該臺(tái)站中是否使用,如果沒有使用則返回信息給服務(wù)端,如果使用,則會(huì)連接FTP服務(wù)器下載所需要的文件,下載成功后,關(guān)閉當(dāng)前主控程序,然后覆蓋舊有程序,覆蓋成功后,返回更新成功信息給服務(wù)端。服務(wù)端收到返回信息,在窗口顯示升級(jí)結(jié)果。圖3服務(wù)端下發(fā)升級(jí)指令到客戶端的工作流程。
圖3
在服務(wù)端界面窗口上選擇要備份的一個(gè)或多個(gè)臺(tái)站,點(diǎn)擊備份按鈕,服務(wù)端會(huì)判斷選擇的臺(tái)站是否在線,如果不在線,退出工作流程,并在窗口提示臺(tái)站不在線,如果在線,則下發(fā)備份指令??蛻舳耸盏絺浞葜噶詈?,復(fù)制所有主控程序所在的目錄,并進(jìn)行壓縮上傳至FTP服務(wù)器,最后將備份結(jié)果返回給客戶端,內(nèi)容包括備份成功與否、完成時(shí)間、備份文件在FTP服務(wù)器中的路徑和文件名等。服務(wù)端收到返回結(jié)果后,將備份信息存儲(chǔ)至數(shù)據(jù)庫(kù)中,并在窗口顯示備份成功與否。圖4為備份流程。
圖4
為了以后更好的拓展客戶端的功能,客戶端增加了自我升級(jí)的功能。當(dāng)編譯出新版本后,使用FTP客戶端軟件把新程序上傳至FTP服務(wù)器固定的目錄中,再將版本號(hào)更新在WEB服務(wù)器的一個(gè)頁(yè)面上。客戶端每隔30秒就會(huì)訪問該頁(yè)面,獲取最新版本號(hào),當(dāng)發(fā)現(xiàn)新的版本號(hào)后,會(huì)下載FTP服務(wù)器中的文件,進(jìn)行自我更新并再次啟動(dòng)。圖5為自我升級(jí)流程。
圖5
目前更換臺(tái)站主控電腦時(shí),還需手動(dòng)從FTP服務(wù)器中下載最近的備份程序來還原主控程序,下一步將在遠(yuǎn)程升級(jí)客戶端增加自動(dòng)還原功能,當(dāng)程序啟動(dòng)后,掃描該主控電腦指定目錄是否存在主控程序,如果不存在,則向服務(wù)端請(qǐng)求最新的備份路徑,然后從FTP服務(wù)器中下載,還原到指定的目錄下。
圖6 遠(yuǎn)程升級(jí)程序客戶端
圖7 遠(yuǎn)程升級(jí)程序服務(wù)端
本程序使用.net framework框架,C#語(yǔ)言編寫,其中使用了UDP傳輸協(xié)議進(jìn)行服務(wù)端與客戶端的通訊,文件的上傳下載都是使用FTP服務(wù)器,目前該程序部署在全區(qū)三級(jí)以上臺(tái)站的主控電腦,已正常使用1年多,運(yùn)行良好,為新遠(yuǎn)程監(jiān)控系統(tǒng)的更新改造提供了很好的助力。