内容简介:客户端程序一个很大的不便的地方就是程序集更新,本文这里简单的介绍一种通用的客户端更新方案。这个方案依赖程序集的动态加载,具体方案如下:将程序集存储在一个文件数据库中,客户端所有程序集直接从文件数据库中加载,数据库中主要存储内容包括:客户端启动的时候,从数据库中动态加载程序集,可以直接使用Assmbly.Load,也可以参考我之前文章介绍的
客户端程序一个很大的不便的地方就是程序集更新,本文这里简单的介绍一种通用的客户端更新方案。这个方案依赖程序集的动态加载,具体方案如下:
将程序集存储在一个文件数据库中,客户端所有程序集直接从文件数据库中加载,数据库中主要存储内容包括:
- 程序集名称
- 程序集大小
- md5信息
- 程序集内容
客户端启动的时候,从数据库中动态加载程序集,可以直接使用Assmbly.Load,也可以参考我之前文章介绍的 .net加载失败的程序集重新加载 实现动态加载。
客户端更新流程如下:
- 该程序集数据库服务器一份,客户端一份
- 程序启动时,首先将本地的程序集目录(程序集名称和md5信息)发送给服务器,服务器根据客户端目录生成需要更新的差异程序集数据库,并返回给客户端。
- 客户端根据接收到的差异数据库更新本地程序集数据库。
先更新,后启动
- 每次启动前,首先更新程序集,
- 更新程序集完成后,然后再加载程序集。
这个方式有点是,实现简单,缺点主要是延长了启动时间
先启动,后更新
- 主程序启动过程中,下载差异数据库,然后提示程序重新启动
- 程序重新启动的过程中,首先合并差异数据库,然后再加载程序集。
这种方案不影响客户端启动,但如果更新的时候有一个重启动作,对客户端不够友好,适合于更新频率较小的场景。
边更新,边启动
对于客户端来说,往往由于加载了一些第三方的主题库,导致本身启动速度就很慢,需要SplashScreen来过渡。这个过渡时间可以用来并发更新程序集
- 启动时,首先加载主屏程序需要显示,但又不怎么会更新的本地程序集(往往是一些第三方的控件),同时显示SplashScreen。
- 加载这些程序集的同时,获取需要更新的程序集数据库,更新本地程序集数据库。
- 更新程序集数据库和加载首屏程序集完成后,正常继续启动。
这个方式既不影响启动速度,又没有重启的动作,但逻辑较复杂些,还需要考虑到一些冲突(例如,已经加载了需要更新的程序集)。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 支付宝客户端架构解析:iOS 客户端启动性能优化初探
- 自己动手做数据库客户端: BashSQL开源数据库客户端
- 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
- 客户端HTTP缓存
- 简析移动客户端安全
- 配置Hadoop集群客户端
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developing Large Web Applications
Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99
As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!