用数据库和C# Web Service实现客户端文件自动更新
2008-03-26 11:23
393 查看
前言:由于项目需要,CS客户端需要不断更新一些文件(包括可执行程序、动态库和一些数据文件),如果手工拷贝很麻烦,需要实现一个在线检测并自动更新的功能。
思路:在服务器端数据库中建表,存储客户端所有文件的目录和内容(用blob字段)以及修改日期,并用c#编写一个Web服务,客户端编写一个单独的升级检测程序和Web服务通信。
根据文件修改的日期判断,如果有更新的文件则下载并提示覆盖,如果覆盖不了则需要关闭CS客户端然后再覆盖。
实现:数据库表结构(Oracle),表名为UPDATE_FILE_INFO
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定时运行的时候就启动该程序(加入命令行参数),如果没有更新直接退出,有更新则进行更新。如果没有命令行参数运行则具有上传文件功能。
暂时就想到这么多,先做着吧,时间比较紧。大家有什么建议或者意见欢迎提出。
思路:在服务器端数据库中建表,存储客户端所有文件的目录和内容(用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 | 备注 | |
数据结构:
文件更新信息类:
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定时运行的时候就启动该程序(加入命令行参数),如果没有更新直接退出,有更新则进行更新。如果没有命令行参数运行则具有上传文件功能。
暂时就想到这么多,先做着吧,时间比较紧。大家有什么建议或者意见欢迎提出。
相关文章推荐
- C# 实现客户端程序自动更新
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库.txt
- web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份
- C# 实现在线软件自动升级自动下载更新文件
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
- C# 实现在线软件自动升级自动下载更新文件
- C# 实现客户端程序自动更新
- C# 实现客户端程序自动更新(百度搜索C#云更新程序)
- C# 实现在线软件自动升级自动下载更新文件
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库
- Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换(含组件源码和实例)
- c#利用反射+特性实现简单的实体映射数据库操作类实现自动增删改查(一)
- 【转】C#使用DataSet Datatable更新数据库的三种实现方法
- C# 执行多条SQL更新语句,实现数据库事务
- C#中实现在32位、64位系统下自动切换不同的SQLite dll文件
- 使用C#的WebService实现客户端软件的更新
- C#WinForm利用Web Service API查询数据库并显示到客户端
- Java 实现自动监听并更新配置文件内容 (转自高手)
- C#[WinForm]实现自动更新(Auto Update)
- 通过sql server存储过程自动下载网络csv文件,来更新数据库