一个图库软件的分享(二)

          这次分享一下cs软件客户端的升级。

          任何软件都不可能一下子完全满足客户需求或解决了所有的bug,cs软件最大的问题就是客户端升级问题,当部署了几百个桌面客户端后,如果client代码有更新,不可能让所有用户自己去把升级包拷贝或覆盖到指定目录下。这个时候就要求我们能够做到升级包的自动更新。

          关于cs升级这块我也思考了很多,最好的用户体验自然是用户打开客户端后,先检查服务器上是否有更新包,如有,经确认操作后,自动把更新包覆盖到本地,再重启,那么就用上了最新版本的客户端。

           在图库的实现上,因为图库本身是一个内部应用系统,客户端还是可以直接连数据库的,所以在升级包通知方面,我还是采用了将最新的版本信息写入数据库,具体实现如下:

           1.拷贝升级包到服务器指定目录A

           2.服务端启动一个检查线程,去目录A检查文件信息

           3.若升级包包名不变,则判断包的文件修改时间和当前版本包的文件修改日期是否有差异,无差异则跳过,等待下次检查,有差异则将当前版本号加0.1,并将新版本信息入库。

           4.客户端启动后,因为可以直接读库,读取服务端最新包的版本信息,与本地存储的版本进行比对,若本地包版本号小于数据库中的版本号,则向服务端发送下载最新包的请求

           5.因为图库本身实现了tcp通讯,所以可以将包文件当成普通的文件下载,新包下载到客户端本地指定目录,成功后更新本地的版本信息,这样两端版本一致,下次再启动时,检查会无差异,不会对相同的包文件进行重复更新。

           6.就算某个客户端间隔了几个版本没有更新,也可以正常更新到最新版本。

扫描二维码关注公众号,回复: 1202426 查看本文章

           如果是一个大型的应用系统,客户端不能直接访问db,那么可以通过请求的方式去检查服务端是否有最新的升级文件,另一方面服务端也可以主动向在线的客户端推送最新的版本信息,实现起来也比较简单。

猜你喜欢

转载自huilet.iteye.com/blog/1508057