您的位置:首页 > 数据库

用数据库和C# Web Service实现客户端文件自动更新

2008-03-26 11:23 393 查看
前言:由于项目需要,CS客户端需要不断更新一些文件(包括可执行程序、动态库和一些数据文件),如果手工拷贝很麻烦,需要实现一个在线检测并自动更新的功能。

思路:在服务器端数据库中建表,存储客户端所有文件的目录和内容(用blob字段)以及修改日期,并用c#编写一个Web服务,客户端编写一个单独的升级检测程序和Web服务通信。

根据文件修改的日期判断,如果有更新的文件则下载并提示覆盖,如果覆盖不了则需要关闭CS客户端然后再覆盖。

实现:数据库表结构(Oracle),表名为UPDATE_FILE_INFO

列名

数据类型

主键

可空

说明

ID

Number(5)

Y

N

唯一主键 从1开始

APP

Varchar2(20)

N

应用的名称

NAME

Nvarchar2(256)

N

文件名

PATH

Nvarchar2(2000)

N

相对路径

MODIFYTIME

date

N

修改时间

CONTENT

blob

N

文件二进制流

REMARK

Nvarchar2(2000)

Y

备注

Web服务:

数据结构:

文件更新信息类:

Public class UpdateFileInfo

{

Public int id;

Public string name;

Public string path;

Public DateTime modifytime;

Public string remark;

}

函数:

获取所有文件的信息

List<UpdateFileInfo> GetAllFileInfo(string app);

参数:app应用的名称,一般是固定一个名称。

返回值:返回所有文件信息的列表,没有则返回空

获取一个文件的二进制流

Byte[] GetFileContent(int id);

参数:id文件的ID

返回值:文件的二进制流

上传一个文件

int UploadFile(string name, string path, datetime modifytime, string remark, string app,

byte[] content);

参数:name文件名称 path文件相对路径 modifytime文件的更新时间 remark 备注app应用名称 content文件二进制流

返回值:返回值小于1则出错。大于1表示文件的ID

注:如果数据库中有对应的name和path则更新文件内容和日期,如果没有则新增一条记录。

客户端:客户端管理员用户具有上传文件的功能,普通用户只有下载文件的功能。客户端首先获取所有文件的信息列表,然后判断是否有需要更新的文件,如果有更新则将现有文件覆盖。记录没有覆盖的文件显示给用户,用户决定是关闭文档还是程序,然后继续更新。

客户端是一个Windows应用程序, CS启动或者CS定时运行的时候就启动该程序(加入命令行参数),如果没有更新直接退出,有更新则进行更新。如果没有命令行参数运行则具有上传文件功能。

暂时就想到这么多,先做着吧,时间比较紧。大家有什么建议或者意见欢迎提出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: