【WCF】基于WCF的在线升级
一、前言
前不久因公司产品需要完成了在线升级功能,因为编程技术不精,不敢冒然采用Socket方法实现在线升级,所以使用比较方便稳妥的WCF方式
如果考虑并发能力的话还是Socket>WCF>Remoting,所以如果你是Socket专家的话这篇你就不用看了。
二、流程
本篇主要讲述一个完整的升级思路,如果你正需要实现升级请结合你公司的情况与自身情况作出调整
1. 从本地读取公司的注册表信息:
一般公司软件产品都会在客户机的Local_Machine下将产品信息写入,包括:产品名称,安装路径,安装日期,产品版本等等,以方便日后升级点击这里
2. 通过WCF服务的ReadUpdateInformation方法(名字自己定义)读取更新文件服务器上的信息,并与注册表上的版本信息进行对比,判断是否需要升级:
假如客户端读出的产品信息为18.0.0,服务器读取的某个更新压缩包的文件名称为18.0.1,说明要升级了。
不推荐将客户机上产品所有的dll与服务器上更新压缩包里所有的dll进行对比,太麻烦! 不如直接对比名称并下载全覆盖来的方便
3. 将需要升级的信息返回到客户机的升级界面上,如果用户选择升级,则可以通过WCF服务的GetFile方法断点续传下载文件点击这里
4. 将客户机下载完的文件进行MD5检查,并通过WCF服务的ServerFileMD5方法得到更新文件的MD5值并返回进行对比点击这里
5. 对比成功后让用户选择是直接更新还是下次开机自动更新:
其实更新就是个File.Copy的过程,重要的还是你能否完整的正确的下载完更新包,更新程序中最后一部别忘了修改注册表信息,将新的版本与更新时间写入!
开机自动更新的方法在此:点击这里
三、其他
WCF的部署点击这里
用户升级界面 我使用WPF来实现,MVVM使用的是轻量级的MVVMLight (Dev的MVVM框架太大,我还没这么大需求)点击这里
最新文章
- jq 模板
- java 构造方法
- node中的可读流和可写流
- Trace Sys
- OpenJudge计算概论-二维数组右上左下遍历
- linux进程调度函数浅析(基于3.16-rc4)
- vi快捷键必知必会
- Gridpanel多种操作帮助文档
- Inverse Quadratic Interpolation (website)
- 键盘控制div上下左右移动 (转)
- Django学习(五)---模板扩展,开发博客页面
- 如何抽象一个 Vue 公共组件
- 常用的几个PHP加密函数
- python 全栈开发,Day3
- c#下载文件选择路径控件
- Excel—宏表函数
- Lucene 02 - Lucene的入门程序(Java API的简单使用)
- #include 相关问题
- .NetCore简单学习图谱
- redis 版的 hello world
热门文章
- Swift enum(枚举)使用范例
- C# 工厂模式+虚方法(接口、抽象方法)实现多态
- Android中通过ActionBar为标题栏添加搜索以及分享视窗
- 非技术1-学期总结&;ending 2016
- DBobjectsCompareScript(数据库对象比较).sql
- RTP与RTCP协议介绍(转载)
- 第14章 Linux启动管理(1)_系统运行级别
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- UWP开发:APP之间的数据交互(以微信为例)
- protocol buffers vs json vs XML