嚴 紅
(江西銅業集團公司德興銅礦,江西德興 334224)
PB10.0實現C/S模式下客戶端軟件自動升級
嚴 紅
(江西銅業集團公司德興銅礦,江西德興 334224)
文章分析了以C/S模式開發的軟件系統,客戶端采用通過Intranet自動下載最新版本的軟件升級原理,升級軟件在PB環境下開發成功。該方法在德興銅礦采礦場已經得到推廣應用,使軟件的升級維護在客戶端自動下載完成,方便快速。
C/S模式;軟件維護;自動升級
在M IS系統的開發過程中,大多數采用客戶端/服務器(C/S)模式[1]或瀏覽器/服務器(B/S)模式。由于B/S模式是一種以Web技術為基礎的新型開發模式,正在以其優勢逐漸占據主流地位。但是,C/S模式是當前開發應用軟件非常成熟的模式,特別是在解決工作組問題中非常有效,市場上仍然被大量采用,而且C/S模式的歷史比較長,所以在實際應用當中,C/S模式的軟件占據了很大的比例,德興銅礦采礦場目前開發的各類應用程序如:生產調度管理系統、計件工資管理系統、電動輪設備管理系統、生產統計經營報表系統、備件管理系統等都是采用此種模式(PowerBuilder10.0/Sql Server2000)。C/S模式需要在每個客戶端安裝應用程序,隨著現場管理的需要的變化,這些應用程序經常需要修改,應用程序一經修改客服端需要重新安裝應用程序,而現場客戶端地理位置又非常分散,導致計算機維護人員的工作量非常大。為了有效解決這一問題,我們自行開發了一個應用軟件自動升級程序,應用程序修改后只需上傳到服務器,客服端運行就實現自動升級更新。
客戶端軟件在運行前,首先進行初始化,通過局域網從Sql Server服務器數據庫得到該軟件的最新版本信息NewVersion(存放在服務器的數據庫中),同時讀取本地文件中(Version.ini文件)存放的上次升級后的版本信息OldVersion,比較兩者,判斷現行系統是否為最新版本。如果兩者一致則證明當前系統已經是最新版本,啟動系統;若不一致,提示用戶軟件有新版本,詢問是否要更新,如果選擇是(如圖1所示),則從服務器上下載新版本,下載成功后刪除舊版本并更新當地文件中的版本變量值OldVis-Num,啟動新系統,如果選擇否,不更新軟件,直接啟動老版本軟件。如果由于網絡堵塞等原因導致下載不成功,則啟動原先版本,版本變量值不變,直到下次運行該系統時再次升級[2]。

圖1 程序升級提示信息窗口
開發工具使用Powerbuilder10.0,數據庫使用Sql2000Server。建立如下數據表SofVisAttribute(表1),用于記錄各個軟件和模塊的相應版本等屬性:

表1 SofVisAttribute表結構
其中,用字段 ID作表的主鍵,用記錄的行號作為 ID字段的值,保證唯一性。
程序分為服務器和客戶端兩部分,服務器部分安裝在FTP服務器上,用于操作屬性表SofVis Attribute,向其中“添加”或者“刪除”記錄,主要是軟件維護人員在更新軟件時用來修改數據庫中的相應記錄。客戶端部分跟隨應用程序的客戶端軟件安裝在C/S模式的客戶機上,用于實現客戶端軟件的自動下載更新。下面分別進行描述:
網絡下載使用FTP或者HTTP協議。在本文的程序實例中選用FTP協議下載。FTP協議,全名Fi1e Transfer Protocol(文件傳輸協議),簡單點來說,它就是一種專門用來傳送文件的網絡協議。比起大家所熟知的HTTP協議(Hypertext Transfer Protocol,超文本傳送協議),FTP協議具有傳輸速度快、管理簡單、界限更大的優點,對于服務器端來說,FTP可以節省更多的系統資源。
由于Powerbuilder10.0本身并未提供任何FTP的功能,因此想在PB10.0中進行FTP傳輸,只能應用PB10.0以外的資源,一般情況有以下幾種常用方法:
(1)直接調用外部命令:此方法的優點是簡單易行,既不需要調用API函數,也不需加入OLE。缺點也很明顯,一是要運行外部命令,將會打開dos窗口,顯得不夠和諧;二是數據傳輸成功與否無法判斷,在編程時不好控制;
(2)使用Internet Transfer控件:Internet Transfer控件的功能很強大,利用它足以制作一個功能比較完善的FTP工具,而且它是操作系統自帶的,在編程時不需要注冊新的控件。但此控件也有不能忽視的缺點,它的數據上傳下載是異步傳輸的,在每次只運行一個FTP命令時尚可,如果一次運行多個FTP命令就會出錯。
我們采取一種新的方式:將FTP的命令用VC ++打包,做成動態鏈接庫(DLL)文件,從系統中調用函數。動態庫函數說明如下[3]:
(1)檢查您的計算機是否在線:function int IsInternetConnection()Library"seinweb.DLL";
(2)下載函數(通過FTP):
function int Ge tWebFile(string host,string user, string pas sword,string remotefile,string localfile,int UpDowntype,ref string RtnError)Library"seinweb. DLL"[4];
說明:參數UpDowntype為0表示下載文件,為1表示上載文件,如需下載文件,則:

服務器部分,功能相對簡單,程序設計主要步驟如下:
(1)建立PB10.0的應用,并且連接SQl2000數據庫,數據庫的連接示例如下:


(2)連接表空間SofVi sAttribute,建立數據窗口d_vision,選擇所有字段,并且將字段 ID設為自動增加屬性,如getrow()等,以保證主鍵的唯一性。
(3)建立主窗口,并添加數據窗口控件dw_1,連接d_vision,添加按鈕“增加”,“刪除”,“保存”,填寫相應功能代碼,如“增加”按鈕的代碼部分如下:

建議用當前日期和時間的字符串作為版本號,在“添加”按鈕中根據當前計算機的日期和時間自動填寫該字段內容,當然也可以根據需要用其他類型的版本號。
“保存”按鈕的部分代碼如下:

(4)編譯完成。記錄填寫示例如下(以生產調度管理系統為例,表2)。

表2 生產調度管理系統數據記錄表
客戶端部分用于實現軟件的版本號識別和軟件自動下載,功能較服務器端復雜,主要設計步驟如下:
(1)建立PB10.0的應用,并且連接SQl2000數據庫,申明實現FTP功能的兩個外部函數,如前面所述。
(2)在本地機建立初始化文件Download.ini,格式示例如下:

(3)連接表空間SofVi sAttribute,建立數據窗口d_vision,選擇所有字段。
(4)建立主窗口,并添加數據窗口控件dw_1,連接d_vision,填寫相應功能代碼。
(5)增加按鈕“下載”,用于填寫FTP下載功能代碼,并且設置Visible屬性為No,即:不可見。
下載文件在“下載”按鈕的clicked事件中完成,在主程序中當版本號不一致時觸發該事件,示例如下:

上述列出了自動升級軟件的客戶端部分的主要功能,以及主要的實現方法。如果做一個完整的程序,還需要有進一步的美化和完善,例如:
(1)當下載新版本軟件時,如果耗時較長,那么就需要彈出一個等待窗口,我們可以根據當前下載的字節數和軟件總的大小的比值來做一個動態的滾動條,以使操作界面更人性化如圖2所示。

圖2 程序升級文件傳輸過程圖
(2)為了操作方便,可以在系統服務器上建立FTP服務器,給每個軟件系統分配一個用戶名,即客戶端軟件通過此用戶名登陸FTP服務器后下載更新程序。
(3)當下載不成功時,彈出對話框給予提示失敗的原因等。
(4)另外,為了防止文件的意外丟失,在主程序中備份Download.ini,如果檢測到該文件丟失,則啟用備份文件來恢復,這樣不致于程序陷入癱瘓狀態。
(5)為了實現更好的通用性,可以把有關FTP的屬性設置存放在數據庫中,這樣當FTP服務器有所變動時,只要修改這一條記錄即可,而不用到客戶機上修改Download.ini文件。
軟件開發者和維護人員充分利用Intranet網絡,開發具有自動升級功能的軟件具有很強的實際意義。在德興銅礦采礦場生產調度管理系統的開發和維護過程中,這套自動升級的方法得到了非常成功的應用。現在己成功推廣到全場各種應用軟件,使用戶軟件升級更加方便快捷,大大減少了維護人員的工作量。
[1] 梅怡紅.如何使客戶端的應用程序自動升級[J].微電子技術, 2007.2.
[2] 喬俊玲,閆曉婷.信息管理系統客戶端軟件自動升級的實現[J].福建電腦,2007,(4).
[3] 凌小鵬.用VB創建支持斷點續傳的Internet傳輸控件[J].計算機應用研究,2006.
[4] 王志霞.文件傳輸協議FTP命令詳解[J].黑龍江氣象,2008.2.
PB10.0 Realizes Client Software Automatic Upgrade under C/SM ode
YAN Hong
(JCC Dexing CopperMine,DeXing,Jiangxi,China 334224)
In this article,the software system developed with C/S mode is analyzed.The clients adopt Intranet to automatically download the software of the latest edition to get upgrade principle.The upgrade software is developed successfully under the PB environment.Thismethod has already got an expansion application in Dexing CopperMine.Software’s upgrade andmaintenance can be automatic download at the customerwith convenience and fast.
C/Smode;software support;automatic update
TP31
B
1009-3842(2010)04-0072-03
2010-10-14
嚴紅(1977-),男,漢族,江西分宜人,學士,工程師,主要從事計算機軟件開發及系統安全工作,E-mail:ychy28@sina.com