C/S架构系统的自动更新功能设计与实现(一)

文章目录

  • 需求背景
  • 功能设计
    • 服务器端版本库目录
    • 服务器端版本更新服务接口
    • 客户端与服务器通信机制
    • 客户端更新机制

需求背景

项目上要开发一个C/S架构的系统,在客户单位的内网上使用。客户要求,系统上线后,有版本更新时,要能够自动检测新版本并获取更新,而不需要每次使用U盘等介质拷贝安装新版本。基于此需求,我们需要设计一套可以在线更新的C/S架构,在系统启动时,检测服务器有无更新版本,如果有的话,就自动下载新版本组件到本地。更新完成后,启动新版本。

功能设计

服务器端版本库目录

设置一个专门用于发布版本的目录,每个版本有更新时,手动放到此目录下。客户端更新时,也从此目录下获取最新版本。可定义版本文件夹的命名规则,如:版本1、版本2、版本3,或:版本_V20190601、版本_V20190603、版本_V20190610。当然,如果不定义规则,将自动获取最后一次进行写操作的文件夹,视为最新版本。

服务器端版本更新服务接口

  • 获取最新版本摘要:包括版本号、版本发布日期、版本更新文件汇总信息(总个数、总大小)等
  • 获取最新版本更新文件详细信息:包括相对路径、大小、时间、MD5码等
  • 获取最新版本完整信息:包括摘要与更新文件详细信息
  • 下载更新文件:根据文件名,从服务器端逐个下载更新文件到客户端

客户端与服务器通信机制

  • 基于HTTP协议的WebAPI通信,架构清晰,开发简单,成熟高效。
  • HTTP协议传输对象(除文件流外)均采用轻量易解析的JSON格式。
  • 内网环境下使用,不考虑客户端身份校验。

客户端更新机制

启动时,首先判断有无版本更新文件,如有,则取得本地版本信息。获取服务器端最新版本,如版本号、版本更新时间、版本文件摘要内容与本地相同,则表示无新版本,不需更新。如不同,则启动更新过程,取得服务器端更新文件信息,逐文件对比服务器端文件与本地文件是否一致,不一致即进行下载更新。
更新的文件先放到一个临时目录下。更新完成时,将更新文件拷贝到可执行文件(主程序)目录下,替换旧版文件。
拷贝替换完成时,删除临时文件,关闭更新窗口,启动主程序(无更新时不显示更新窗口,直接启动主程序)。

你可能感兴趣的:(C/S,在线更新,版本,WebAPI,C#)