软件自动更新原理.pdfVIP

  • 35
  • 0
  • 约7.5千字
  • 约 7页
  • 2017-06-06 发布于广东
  • 举报
软件自动更新原理.pdf

软件更新原理 自动更新的时候,客户端软件提交更新请求给固定的网址,然后网址返回最新版本的版本号。客户端 软件和自己的版本号对比,如果发现服务器的版本和自己的版本不一样,那么就请求下载升级补丁。服务 器响应请求,提供补丁下载;下载成功后,手动或自动安装一下就可以了。 安装补丁的时候,客户端的主程序一般是要关闭的,除非采用动态卸载、调入组件的技术,比如网络 游戏,就是尽量让玩家边玩游戏边更新。 如果更新的是主程序,那么就必须关闭主程序了。可是主程序关闭了之后,谁来调用安装补丁呢?为 了解决这个问题,人们把主程序和自动更新程序分开来做。当需要校验版本的时候,主程序调用自动更新 程序。自动更新程序如果发现主程序需要更新,在下载了升级补丁之后,就会要求关闭主程序。主程序关 闭之后,自动更新程序调用升级补丁进行安装,安装完成后再重新启动主程序。自动更新程序自动退出, 完成更新任务。这和你刚才关闭电脑后再插网卡的原理是一模一样的。其实生活中有很多现象可以借鉴到 软件设计中。 人们嫌这样的升级仍然太麻烦,后来出现了B/S结构,大家像抓住了救命稻草一样的追捧至今,希望 能从这些劳动中解脱出来。B/S结构就是浏览器/服务器结构,它所有的功能,都是在浏览器里完成。程序 升级的时候,只需要在服务端升级一下就可以了,浏览器再次访问服务器的时候,得到的就是新版本。你 可以把它理解成一个纯粹的网站。是不是站长更新的时候,你打开网站就看到最新的页面? 但是B/S结构有天生的弱点,因为它是基于网页浏览的,所以安全性是首要的难题,你能浏览的东西, 原则上别人也能浏览。而且出于安全考虑,B/S访问本地资源,比如串口,必须借助于其他技术实现。B/S 也不是万能的,必须考虑实际应用。 Winform的自动更新 winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一 台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个通过软件实现自动升级技术方案, 弥补了这一缺陷,有较好的参考价值。 一、升级的好处。 长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论 当中,C/S结构的程序的可维护性差,布置困难,升级不方便,维护成本高就是一个相当重要的因素,也是 那些B/S的支持者们将Client/Server结构打入地狱的一个重要原因。 现在好了,我们就在最新的基于Microsoft 的 WinForm上用WebServices来实现软件的自动升级功能。 二、升级的技术原理。 升级的原理有好几个,首先无非是将现有版本与最新版本作比较,发现最新的则提示用户是否升级。当然 也有人用其它属性比较的,例如:文件大小。 或者更新日期。 而实现的方法呢?在VB时代,我使用的是XmlHTTP+INet控件。用XmlHTTP获取信息,用INET传输升 级文件,而用一个简单的BAT文件来实现升级。 Public SubCheckUpdate() OnErrorResumeNext DimbAsBoolean DimXmlHttpAsObject SetXmlHttp=CreateObject(Microsoft.XMLHttp XmlHttp.OpenGET,Http:///MuAdmin/update.xml,False XmlHttp.Send DimvsAsString vs=XmlHttp.responseText IfErr.Number0Then ExitSub EndIf DimXmlAsObject SetXml=CreateObject(Microsoft.XmlDom Xml.LoadXmlvs DimVersionAsString DimdownAddrAsString DimFSize AsLong DimfInfoAsString Version=Xml.DocumentElement.ChildNodes(0).Text downAddr=Xml.DocumentElement.ChildNodes(1).Text FSize =CLng(Xml.DocumentElement.ChildNodes(2).Text) fInfo=Xml.DocumentElement.ChildNodes(3).Text SetXml=Nothing SetXmlHttp=Nothing DimMajorAsLong DimMinorAsL

文档评论(0)

1亿VIP精品文档

相关文档