版本自动更新程序及3种实现策略.docVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
版本自动更新程序及3种实现策略 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上。然后建立一个XML文件,该文件列举最新版本号和所有文件及文件最后修改日期。如文件较多可以通过工具自动建立XML文件。当某客户机运行程序后会自动下载这个XML文件,通过与本地机器上的版本号匹配,如本机上的版本号比服务器上的要旧,通知客户机运行更新程序。如用户更新了版本,将最新版本号写入配置文件,这样方便下一次匹配。 通过可行性分析可以使用下面3种方案下载 1.局域网共享文件夹下载? 2.Tcp/ip远程下载? 3.通过Web方式下载。 方式1适合内部网络,功能简单,编程只需调用File.Copy()就能实现。如建立VPN网络,也可视为远程下载。我们只需在服务器上共享一个文件夹并设定访问权限,然后将最新版本文件存放在这个目录。升级程序直接从这个目录Copy文件即可。 方式2是通过基于tcp/ip 的Socket组件编程来实现,使用这个机制必须有服务器监听程序。其简单设计思路是在服务器端启动TcpListener监听客户端的Socket连接,当Client发送连接请求,TcpListener捕获当前请求的Socket,并获取收到的数据(字符串,称为命令)。然后由命令处理程序分析该字符串,如果字符串头部包含GET_FILE标识则为下载文件请求。 例:客户机向服务器程序发送请求命令:GET_FILE|D:\PUBLISH\TEST.DLL。首先TcpListener捕获当前请求的Socket.并接收到字符数据GET_FILE|D:\PUBLISH\TEST.DLL,通过分析发现GET_FILE标识符,表示下载文件请求.然后通过socket.SendFile(file=D:\PUBLISH\TEST.DLL)将文件传送给当前Socket。客户端由NetworkStream.Read()方法接收来自服务器发送的文件。 方式3是通过.NetFramework提供的WebClient组件下载文件。只需指定DownloadData()方法中参数address(url)。 通过上面的介绍,1,3方法最简单。Tcp/ip相对复杂。 ? 下面讲解版本更新程序系统框架图 主窗体-下载控制器-XmlLoader关系图 图解: frmUpgrader窗体内定义了一个下载控制器及2个TreeView控件. 当执行[检查更新],控制器调用当前下载器的DownloadServerXml()方法从服务器下载XmlServerFiles.xml文件。下载成功将文件交给XmlLoader分析器,分析器创建XmlDocument对象。最后将XML分析器作为FileView构造器参数创建FileView实例,分别调用FileView的LoadTreeViewClient方法创建客户端文件清单的TreeView及LoadTreeViewServer方法创建服务器端文件清单的TreeView。TreeView的数据来源是两个Xml文件。 DownloadController 下载控制器,它负责建立下载策略及控制当前下载器。 ? FileView对象实际是个TreeView生成器。它跟据Xml结构自动生成TreeView. XmlLoader分析器主要功能是分析服务器端及本地的XML文件(XmlServerFiles.xml和XmlClientFiles.xml)。XmlLoader类图列举了所有方法,从图中可以看出控制XmlDocument对象。通过XmlDocument.SelectSingleNode方法查找某个指定的文件,然后获取文件最后修改日期文件名等信息用于匹配。 IDownloader接口定义了所有下载器的方法,下面会详细讲解3个下载器的实现策略。 FileInfo是文件的实体类,结构相当简单,只包含文件名,物理路径及最后修改时间。 三种不同的下载器实现方案: 三种不同的下载器实现方案类及接口说明:? frmUpgrader: 主窗体 DownloadController:下载控制器,如上图所示,它是控制IDownloader接口。 IDownloader: 下载器接口, 三种不同的下载器分别实现了这个接口 LAN_Downloader: 局域网复制文件下载器。 WebClient_Downloader: 广域网下载器,通过WebClient组件下载文件。 TcpIp_Downloader: Tcp/ip下载器。需要运行Tcp/ip服务器提供下载服务。 ? 主窗体有[检查更新]及[开始更新]两个按钮。分别调用下载控制器的CheckUpdate()及Download()方法。 下载控制器控制IDownloader接口,三种不同的下载

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档