李海建
(天津天鐵冶金集團(tuán)計(jì)控電訊廠,河北涉縣056404)
程序自動(dòng)升級(jí)在物流管理系統(tǒng)中的應(yīng)用
李海建
(天津天鐵冶金集團(tuán)計(jì)控電訊廠,河北涉縣056404)
針對(duì)在C/S模式下客戶端軟件升級(jí)困難的問(wèn)題,設(shè)計(jì)了一種軟件自動(dòng)升級(jí)程序。將該程序嵌入到物流管理系統(tǒng)中,通過(guò)FTP、服務(wù)器以及線程技術(shù)等,實(shí)現(xiàn)了在系統(tǒng)登錄前自動(dòng)下載最新程序的功能,提高了工作效率,減少了軟件維護(hù)的工作量。
程序;自動(dòng)升級(jí);C#語(yǔ)言
隨著計(jì)算機(jī)技術(shù)的發(fā)展以及服務(wù)器等硬件設(shè)施的快速提升,B/S(瀏覽器/服務(wù)器)的架構(gòu)模式所受到的桎梏也越來(lái)越小,優(yōu)點(diǎn)越來(lái)越突出,逐漸為大多數(shù)編程人員所接受。C/S架構(gòu)的程序可維護(hù)性差、布置困難,升級(jí)不方便,使B/S架構(gòu)即網(wǎng)頁(yè)版系統(tǒng)應(yīng)用廣泛,而C/S越來(lái)越不被人所重視的主要原因之一。雖然B/S的模式優(yōu)點(diǎn)不可忽略,但C/S(客戶端/服務(wù)器)模式也因其數(shù)據(jù)量小、響應(yīng)時(shí)間短、安全性高等優(yōu)勢(shì),在解決幾十到上百個(gè)用戶的局域網(wǎng)中,仍然是一個(gè)不錯(cuò)的選擇。而根據(jù)我廠自身的硬件、客戶端的實(shí)際情況,我們對(duì)物流管理系統(tǒng)采用了C/S模式。然而因?yàn)榭蛻舳吮容^分散,應(yīng)用程序的升級(jí)每個(gè)客戶端都需要重新安裝程序一次,特別情況需要現(xiàn)場(chǎng)指導(dǎo),十分繁瑣。那么在C/S架構(gòu)下的程序當(dāng)有新版本發(fā)布時(shí),為實(shí)現(xiàn)客戶端自動(dòng)升級(jí),通過(guò)自動(dòng)升級(jí)在物流系統(tǒng)上的應(yīng)用,闡述C/S架構(gòu)的程序如何實(shí)現(xiàn)自動(dòng)升級(jí),并取得了很好的效果。
考慮到系統(tǒng)分模塊的特性,利用C#語(yǔ)言的特點(diǎn),將每個(gè)模塊都生成了dll文件,這樣做的特點(diǎn)是文件更新時(shí),只會(huì)影響單個(gè)更新模塊,不影響系統(tǒng)其他模塊的使用,而且每次更新的文件小,能實(shí)現(xiàn)快速加載??蛻舳酥恍枰螺d最新的dll文件后,就能實(shí)現(xiàn)程序的升級(jí)。判別一個(gè)文件是否是新文件的方法有幾種:文件大小、文件日期以及文件的版本號(hào)。物流管理系統(tǒng)的升級(jí)采用版本號(hào)來(lái)識(shí)別,每次模塊重新生成后,C#語(yǔ)言會(huì)自動(dòng)更新一個(gè)版本號(hào),通過(guò)與客戶端該文件的版本號(hào)的對(duì)比,發(fā)現(xiàn)最新的文件,之后進(jìn)行自動(dòng)更新,達(dá)到程序升級(jí)的目的。
3.1 建立ftp網(wǎng)站和更新模版文件update.xml
在局域網(wǎng)的服務(wù)器上,建立一個(gè)ftp網(wǎng)站,用來(lái)存放升級(jí)的文件update.xml和各個(gè)模塊的dll文件。該文件用來(lái)存放物流管理系統(tǒng)中的所有模塊信息以及對(duì)應(yīng)的版本號(hào),如果其中某個(gè)模塊需要變動(dòng),則只需在程序中將該模塊重新生成新的dll文件,之后將dll文件的版本號(hào)更新到update.xml對(duì)應(yīng)模塊下即可。該update.xml下的模塊存放方式如下:
3.2 客戶端存放update.xml
該文件在客戶端程序安裝時(shí)一同存放到程序的根目錄下,文件保存的內(nèi)容是程序當(dāng)前各個(gè)模塊的信息以及版本號(hào)。其內(nèi)部格式與ftp服務(wù)器上的update.xml的格式一致,目的是用來(lái)與ftp服務(wù)器上的update.xml文件做對(duì)比,查看是否有最新文件。
3.3 編寫線程,在登錄前加載升級(jí)窗
該升級(jí)窗口主要是在客戶端登錄程序時(shí)出現(xiàn),顯示內(nèi)容為需要升級(jí)的模塊文件和update.xml模版文件。
3.4 對(duì)比服務(wù)器update.xml文件和客戶端的update.xml文件的內(nèi)容
通過(guò)方法分別讀取服務(wù)器文件和客戶端文件,
分別將內(nèi)容存放到listbox的容器下,利用C#語(yǔ)言提供的函數(shù)version來(lái)比較兩個(gè)listbox下每行的模塊版本號(hào),發(fā)現(xiàn)最新的,并將之顯示在第三個(gè)listbox容器中,而客戶端能看到的就是第三個(gè)listbox所顯示的內(nèi)容即需升級(jí)的文件名稱。
確定更新的文件后,利用ftp傳輸協(xié)議將最新文件從服務(wù)器下載到客戶端安轉(zhuǎn)程序的根目錄下,從而實(shí)現(xiàn)程序的自動(dòng)升級(jí)。
利用網(wǎng)絡(luò)傳輸協(xié)議、xml以及C#語(yǔ)言等技術(shù)特點(diǎn),通過(guò)模塊版本號(hào)的比較,實(shí)現(xiàn)了C/S模式下的軟件自動(dòng)升級(jí),取得了良好的效果,極大地減少了軟件維護(hù)的工作量,為今后的自主研發(fā)軟件提供了參考。
[1] Christian Nagel.C#高級(jí)編程[M].7版.李銘,譯.北京:清華出版社,2008.
Application of Automatic Program Upgrading to Logistics Management System
LI Hai-jian
(Computerized Telecommunication Factory,Tianjin Tiantie Metallurgy Group,She County, Hebei Province 056404,China)
An automatic software upgrading program was designed to tackle the difficulty of client software upgrading in C/S mode.Built into logistics management system,the said program realized the function of automatically downloading the latest application before system login via FTP,server and simultaneous multithreading technology.The working efficiency was improved with less software maintenance.
program;automatic upgrading;C language
10.3969/j.issn.1006-110X.2015.06.007
2015-08-15
2015-09-10
李海建(1979—),男,本科,工程師,主要從事軟件編程方面的研究工作。