APP下载

PB10.0实现C/S模式下客户端软件自动升级

2010-12-29

铜业工程 2010年4期
关键词:控件应用程序客户端

严 红

(江西铜业集团公司德兴铜矿,江西德兴 334224)

PB10.0实现C/S模式下客户端软件自动升级

严 红

(江西铜业集团公司德兴铜矿,江西德兴 334224)

文章分析了以C/S模式开发的软件系统,客户端采用通过Intranet自动下载最新版本的软件升级原理,升级软件在PB环境下开发成功。该方法在德兴铜矿采矿场已经得到推广应用,使软件的升级维护在客户端自动下载完成,方便快速。

C/S模式;软件维护;自动升级

1 引言

在M IS系统的开发过程中,大多数采用客户端/服务器(C/S)模式[1]或浏览器/服务器(B/S)模式。由于B/S模式是一种以Web技术为基础的新型开发模式,正在以其优势逐渐占据主流地位。但是,C/S模式是当前开发应用软件非常成熟的模式,特别是在解决工作组问题中非常有效,市场上仍然被大量采用,而且C/S模式的历史比较长,所以在实际应用当中,C/S模式的软件占据了很大的比例,德兴铜矿采矿场目前开发的各类应用程序如:生产调度管理系统、计件工资管理系统、电动轮设备管理系统、生产统计经营报表系统、备件管理系统等都是采用此种模式(PowerBuilder10.0/Sql Server2000)。C/S模式需要在每个客户端安装应用程序,随着现场管理的需要的变化,这些应用程序经常需要修改,应用程序一经修改客服端需要重新安装应用程序,而现场客户端地理位置又非常分散,导致计算机维护人员的工作量非常大。为了有效解决这一问题,我们自行开发了一个应用软件自动升级程序,应用程序修改后只需上传到服务器,客服端运行就实现自动升级更新。

2 自动升级原理

客户端软件在运行前,首先进行初始化,通过局域网从Sql Server服务器数据库得到该软件的最新版本信息NewVersion(存放在服务器的数据库中),同时读取本地文件中(Version.ini文件)存放的上次升级后的版本信息OldVersion,比较两者,判断现行系统是否为最新版本。如果两者一致则证明当前系统已经是最新版本,启动系统;若不一致,提示用户软件有新版本,询问是否要更新,如果选择是(如图1所示),则从服务器上下载新版本,下载成功后删除旧版本并更新当地文件中的版本变量值OldVis-Num,启动新系统,如果选择否,不更新软件,直接启动老版本软件。如果由于网络堵塞等原因导致下载不成功,则启动原先版本,版本变量值不变,直到下次运行该系统时再次升级[2]。

图1 程序升级提示信息窗口

3 程序实现方法和结构

开发工具使用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表示上载文件,如需下载文件,则:

3.1 服务器端程序

服务器部分,功能相对简单,程序设计主要步骤如下:

(1)建立PB10.0的应用,并且连接SQl2000数据库,数据库的连接示例如下:

(2)连接表空间SofVi sAttribute,建立数据窗口d_vision,选择所有字段,并且将字段 ID设为自动增加属性,如getrow()等,以保证主键的唯一性。

(3)建立主窗口,并添加数据窗口控件dw_1,连接d_vision,添加按钮“增加”,“删除”,“保存”,填写相应功能代码,如“增加”按钮的代码部分如下:

建议用当前日期和时间的字符串作为版本号,在“添加”按钮中根据当前计算机的日期和时间自动填写该字段内容,当然也可以根据需要用其他类型的版本号。

“保存”按钮的部分代码如下:

(4)编译完成。记录填写示例如下(以生产调度管理系统为例,表2)。

表2 生产调度管理系统数据记录表

3.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文件。

4 结束语

软件开发者和维护人员充分利用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

猜你喜欢

控件应用程序客户端
基于.net的用户定义验证控件的应用分析
删除Win10中自带的应用程序
如何看待传统媒体新闻客户端的“断舍离”?
谷歌禁止加密货币应用程序
关于.net控件数组的探讨
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
三星电子将开设应用程序下载商店