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

 

前言:由于项目需要,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

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

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

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

暂时就想到这么多,先做着吧,时间比较紧。大家有什么建议或者意见欢迎提出。

转载于:https://www.cnblogs.com/toutouwa/archive/2008/03/26/1122763.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值