嚴(yán) 紅
(江西銅業(yè)集團(tuán)公司德興銅礦,江西德興 334224)
PB10.0實(shí)現(xiàn)C/S模式下客戶端軟件自動(dòng)升級(jí)
嚴(yán) 紅
(江西銅業(yè)集團(tuán)公司德興銅礦,江西德興 334224)
文章分析了以C/S模式開發(fā)的軟件系統(tǒng),客戶端采用通過Intranet自動(dòng)下載最新版本的軟件升級(jí)原理,升級(jí)軟件在PB環(huán)境下開發(fā)成功。該方法在德興銅礦采礦場(chǎng)已經(jīng)得到推廣應(yīng)用,使軟件的升級(jí)維護(hù)在客戶端自動(dòng)下載完成,方便快速。
C/S模式;軟件維護(hù);自動(dòng)升級(jí)
在M IS系統(tǒng)的開發(fā)過程中,大多數(shù)采用客戶端/服務(wù)器(C/S)模式[1]或?yàn)g覽器/服務(wù)器(B/S)模式。由于B/S模式是一種以Web技術(shù)為基礎(chǔ)的新型開發(fā)模式,正在以其優(yōu)勢(shì)逐漸占據(jù)主流地位。但是,C/S模式是當(dāng)前開發(fā)應(yīng)用軟件非常成熟的模式,特別是在解決工作組問題中非常有效,市場(chǎng)上仍然被大量采用,而且C/S模式的歷史比較長(zhǎng),所以在實(shí)際應(yīng)用當(dāng)中,C/S模式的軟件占據(jù)了很大的比例,德興銅礦采礦場(chǎng)目前開發(fā)的各類應(yīng)用程序如:生產(chǎn)調(diào)度管理系統(tǒng)、計(jì)件工資管理系統(tǒng)、電動(dòng)輪設(shè)備管理系統(tǒng)、生產(chǎn)統(tǒng)計(jì)經(jīng)營(yíng)報(bào)表系統(tǒng)、備件管理系統(tǒng)等都是采用此種模式(PowerBuilder10.0/Sql Server2000)。C/S模式需要在每個(gè)客戶端安裝應(yīng)用程序,隨著現(xiàn)場(chǎng)管理的需要的變化,這些應(yīng)用程序經(jīng)常需要修改,應(yīng)用程序一經(jīng)修改客服端需要重新安裝應(yīng)用程序,而現(xiàn)場(chǎng)客戶端地理位置又非常分散,導(dǎo)致計(jì)算機(jī)維護(hù)人員的工作量非常大。為了有效解決這一問題,我們自行開發(fā)了一個(gè)應(yīng)用軟件自動(dòng)升級(jí)程序,應(yīng)用程序修改后只需上傳到服務(wù)器,客服端運(yùn)行就實(shí)現(xiàn)自動(dòng)升級(jí)更新。
客戶端軟件在運(yùn)行前,首先進(jìn)行初始化,通過局域網(wǎng)從Sql Server服務(wù)器數(shù)據(jù)庫(kù)得到該軟件的最新版本信息NewVersion(存放在服務(wù)器的數(shù)據(jù)庫(kù)中),同時(shí)讀取本地文件中(Version.ini文件)存放的上次升級(jí)后的版本信息OldVersion,比較兩者,判斷現(xiàn)行系統(tǒng)是否為最新版本。如果兩者一致則證明當(dāng)前系統(tǒng)已經(jīng)是最新版本,啟動(dòng)系統(tǒng);若不一致,提示用戶軟件有新版本,詢問是否要更新,如果選擇是(如圖1所示),則從服務(wù)器上下載新版本,下載成功后刪除舊版本并更新當(dāng)?shù)匚募械陌姹咀兞恐礝ldVis-Num,啟動(dòng)新系統(tǒng),如果選擇否,不更新軟件,直接啟動(dòng)老版本軟件。如果由于網(wǎng)絡(luò)堵塞等原因?qū)е孪螺d不成功,則啟動(dòng)原先版本,版本變量值不變,直到下次運(yùn)行該系統(tǒng)時(shí)再次升級(jí)[2]。
圖1 程序升級(jí)提示信息窗口
開發(fā)工具使用Powerbuilder10.0,數(shù)據(jù)庫(kù)使用Sql2000Server。建立如下數(shù)據(jù)表SofVisAttribute(表1),用于記錄各個(gè)軟件和模塊的相應(yīng)版本等屬性:
表1 SofVisAttribute表結(jié)構(gòu)
其中,用字段 ID作表的主鍵,用記錄的行號(hào)作為 ID字段的值,保證唯一性。
程序分為服務(wù)器和客戶端兩部分,服務(wù)器部分安裝在FTP服務(wù)器上,用于操作屬性表SofVis Attribute,向其中“添加”或者“刪除”記錄,主要是軟件維護(hù)人員在更新軟件時(shí)用來修改數(shù)據(jù)庫(kù)中的相應(yīng)記錄??蛻舳瞬糠指S應(yīng)用程序的客戶端軟件安裝在C/S模式的客戶機(jī)上,用于實(shí)現(xiàn)客戶端軟件的自動(dòng)下載更新。下面分別進(jìn)行描述:
網(wǎng)絡(luò)下載使用FTP或者HTTP協(xié)議。在本文的程序?qū)嵗羞x用FTP協(xié)議下載。FTP協(xié)議,全名Fi1e Transfer Protocol(文件傳輸協(xié)議),簡(jiǎn)單點(diǎn)來說,它就是一種專門用來傳送文件的網(wǎng)絡(luò)協(xié)議。比起大家所熟知的HTTP協(xié)議(Hypertext Transfer Protocol,超文本傳送協(xié)議),FTP協(xié)議具有傳輸速度快、管理簡(jiǎn)單、界限更大的優(yōu)點(diǎn),對(duì)于服務(wù)器端來說,FTP可以節(jié)省更多的系統(tǒng)資源。
由于Powerbuilder10.0本身并未提供任何FTP的功能,因此想在PB10.0中進(jìn)行FTP傳輸,只能應(yīng)用PB10.0以外的資源,一般情況有以下幾種常用方法:
(1)直接調(diào)用外部命令:此方法的優(yōu)點(diǎn)是簡(jiǎn)單易行,既不需要調(diào)用API函數(shù),也不需加入OLE。缺點(diǎn)也很明顯,一是要運(yùn)行外部命令,將會(huì)打開dos窗口,顯得不夠和諧;二是數(shù)據(jù)傳輸成功與否無法判斷,在編程時(shí)不好控制;
(2)使用Internet Transfer控件:Internet Transfer控件的功能很強(qiáng)大,利用它足以制作一個(gè)功能比較完善的FTP工具,而且它是操作系統(tǒng)自帶的,在編程時(shí)不需要注冊(cè)新的控件。但此控件也有不能忽視的缺點(diǎn),它的數(shù)據(jù)上傳下載是異步傳輸?shù)?在每次只運(yùn)行一個(gè)FTP命令時(shí)尚可,如果一次運(yùn)行多個(gè)FTP命令就會(huì)出錯(cuò)。
我們采取一種新的方式:將FTP的命令用VC ++打包,做成動(dòng)態(tài)鏈接庫(kù)(DLL)文件,從系統(tǒng)中調(diào)用函數(shù)。動(dòng)態(tài)庫(kù)函數(shù)說明如下[3]:
(1)檢查您的計(jì)算機(jī)是否在線:function int IsInternetConnection()Library"seinweb.DLL";
(2)下載函數(shù)(通過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];
說明:參數(shù)UpDowntype為0表示下載文件,為1表示上載文件,如需下載文件,則:
服務(wù)器部分,功能相對(duì)簡(jiǎn)單,程序設(shè)計(jì)主要步驟如下:
(1)建立PB10.0的應(yīng)用,并且連接SQl2000數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的連接示例如下:
(2)連接表空間SofVi sAttribute,建立數(shù)據(jù)窗口d_vision,選擇所有字段,并且將字段 ID設(shè)為自動(dòng)增加屬性,如getrow()等,以保證主鍵的唯一性。
(3)建立主窗口,并添加數(shù)據(jù)窗口控件dw_1,連接d_vision,添加按鈕“增加”,“刪除”,“保存”,填寫相應(yīng)功能代碼,如“增加”按鈕的代碼部分如下:
建議用當(dāng)前日期和時(shí)間的字符串作為版本號(hào),在“添加”按鈕中根據(jù)當(dāng)前計(jì)算機(jī)的日期和時(shí)間自動(dòng)填寫該字段內(nèi)容,當(dāng)然也可以根據(jù)需要用其他類型的版本號(hào)。
“保存”按鈕的部分代碼如下:
(4)編譯完成。記錄填寫示例如下(以生產(chǎn)調(diào)度管理系統(tǒng)為例,表2)。
表2 生產(chǎn)調(diào)度管理系統(tǒng)數(shù)據(jù)記錄表
客戶端部分用于實(shí)現(xiàn)軟件的版本號(hào)識(shí)別和軟件自動(dòng)下載,功能較服務(wù)器端復(fù)雜,主要設(shè)計(jì)步驟如下:
(1)建立PB10.0的應(yīng)用,并且連接SQl2000數(shù)據(jù)庫(kù),申明實(shí)現(xiàn)FTP功能的兩個(gè)外部函數(shù),如前面所述。
(2)在本地機(jī)建立初始化文件Download.ini,格式示例如下:
(3)連接表空間SofVi sAttribute,建立數(shù)據(jù)窗口d_vision,選擇所有字段。
(4)建立主窗口,并添加數(shù)據(jù)窗口控件dw_1,連接d_vision,填寫相應(yīng)功能代碼。
(5)增加按鈕“下載”,用于填寫FTP下載功能代碼,并且設(shè)置Visible屬性為No,即:不可見。
下載文件在“下載”按鈕的clicked事件中完成,在主程序中當(dāng)版本號(hào)不一致時(shí)觸發(fā)該事件,示例如下:
上述列出了自動(dòng)升級(jí)軟件的客戶端部分的主要功能,以及主要的實(shí)現(xiàn)方法。如果做一個(gè)完整的程序,還需要有進(jìn)一步的美化和完善,例如:
(1)當(dāng)下載新版本軟件時(shí),如果耗時(shí)較長(zhǎng),那么就需要彈出一個(gè)等待窗口,我們可以根據(jù)當(dāng)前下載的字節(jié)數(shù)和軟件總的大小的比值來做一個(gè)動(dòng)態(tài)的滾動(dòng)條,以使操作界面更人性化如圖2所示。
圖2 程序升級(jí)文件傳輸過程圖
(2)為了操作方便,可以在系統(tǒng)服務(wù)器上建立FTP服務(wù)器,給每個(gè)軟件系統(tǒng)分配一個(gè)用戶名,即客戶端軟件通過此用戶名登陸FTP服務(wù)器后下載更新程序。
(3)當(dāng)下載不成功時(shí),彈出對(duì)話框給予提示失敗的原因等。
(4)另外,為了防止文件的意外丟失,在主程序中備份Download.ini,如果檢測(cè)到該文件丟失,則啟用備份文件來恢復(fù),這樣不致于程序陷入癱瘓狀態(tài)。
(5)為了實(shí)現(xiàn)更好的通用性,可以把有關(guān)FTP的屬性設(shè)置存放在數(shù)據(jù)庫(kù)中,這樣當(dāng)FTP服務(wù)器有所變動(dòng)時(shí),只要修改這一條記錄即可,而不用到客戶機(jī)上修改Download.ini文件。
軟件開發(fā)者和維護(hù)人員充分利用Intranet網(wǎng)絡(luò),開發(fā)具有自動(dòng)升級(jí)功能的軟件具有很強(qiáng)的實(shí)際意義。在德興銅礦采礦場(chǎng)生產(chǎn)調(diào)度管理系統(tǒng)的開發(fā)和維護(hù)過程中,這套自動(dòng)升級(jí)的方法得到了非常成功的應(yīng)用?,F(xiàn)在己成功推廣到全場(chǎng)各種應(yīng)用軟件,使用戶軟件升級(jí)更加方便快捷,大大減少了維護(hù)人員的工作量。
[1] 梅怡紅.如何使客戶端的應(yīng)用程序自動(dòng)升級(jí)[J].微電子技術(shù), 2007.2.
[2] 喬俊玲,閆曉婷.信息管理系統(tǒng)客戶端軟件自動(dòng)升級(jí)的實(shí)現(xiàn)[J].福建電腦,2007,(4).
[3] 凌小鵬.用VB創(chuàng)建支持?jǐn)帱c(diǎn)續(xù)傳的Internet傳輸控件[J].計(jì)算機(jī)應(yīng)用研究,2006.
[4] 王志霞.文件傳輸協(xié)議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
嚴(yán)紅(1977-),男,漢族,江西分宜人,學(xué)士,工程師,主要從事計(jì)算機(jī)軟件開發(fā)及系統(tǒng)安全工作,E-mail:ychy28@sina.com