用 PB 实现客户端程序的自动升级
2008-08-03 23:50
C/S 结构的运行模式虽然没有 B/S 结构更加容易扩展和简便,但由于其稳定性
好、安全性高、运行速度快等特点,现在仍然被广泛应用于各种大型应用系统
中,有些则和 B/S 形成混合的运行模式。
B/S 优越于 C/S 的一个很大特点就是,客户端不需要安装客户端软件,通过浏
览器就可以实现各种应用,并且服务器上的内容的变化可以快速反映到客户
端。如果让客户端软件也实现自动升级,可以弥补 C/S 模式在这方面的缺陷。
本文就给出了一种可自动升级客户端软件的设计思路,并给出了使用 PB 的实现
方法。
1 实现思路
整个软件结构包括:升级数据库服务器、升级代理程序、客户端应用程序、升
级服务管理程序等。升级数据库器保存各个版本软件的版本、文件名、文件内
容等信息;升级代理程序负责读取升级数据库服务器中的最新版本信息和文件
信息,完成最新版本下载和更新,并启动客户端应用程序;客户端应用程序为
客户端具体应用的程序软件,即为需要实现更新的软件;最新版本上载程序是
升级信息管理程序,用于上传最新的版本信息和相应的文件内容。整体结构如
图 1 所示。
图 1 自动升级的软件实现方案
客户端应用程序运行之前,先启动一个升级代理程序,该代理从升级数据库服
务器中读取升级信息,如果存在最新版本,提示用户并决定是否下载最新版
本,然后并启动客户端应用程序。
升级信息使用如下数据表(soft_fileinfo)进行维护和管理,文件版本号保
存文件的版本信息,文件名和文件内容保存文件的名称和文件的二进制内容。
创建改变的 SQL 语句如下(ASA7 数据库):
CREATE TABLE dba.soft_fileinfo(
version char(14) NOT NULL, //文件版本号
filename char(30) NOT NULL, //文件名
filedata long binary, //文件内容
PRIMARY KEY (version, filename)); //以文件版本号和文件名为主键
下面给出 PB 中的程序实现方法,假设客户端应用程序执行文件名
为"sale.exe",升级数据库服务器采用 ASA7。
2 客户端升级代理程序实现
在 PB 中创建一个应用,在应用的实例变量中声明:
string old_version
declare get_new_filename cursor for
select filename
from dba.soft_fileinfo
where version > :old_version;
在 Open 事件中编写如下代码:
评论2