下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、利用Web Services实现软件自动升级摘要:软件维护升级工作是软件生命周期最重要的环节。为了解决以往/S(lient/Server)模式下的客户端软件升级效率低的问题,设计了/S应用系统自动升级处理程序。该程序利用ebServies技术、#和XL语言,通过网络来完成/S应用系统的自动升级。与原有手工升级、FTP文件服务器升级和第三方控件升级相比,升级效率更高。该方案具有较好的参考价值。关键词:#;ebServies;XL;软件自动升级中图法分类号:文献标志码:1引言随着计算机网络应用技术的不断发展,在开发IS系统时,大多采用基于/S(客户机/服务器)模式或B/S(浏览器/服务器)模式。现
2、在B/S模式以其真正意义上的瘦客户机/胖服务器模式优势占据了主导地位。但是由于客户机/服务器模式具有的数据流量孝响应时间短、安全性高等特点,在解决几十个到几百个用户的局域网中,仍然是一个不错的选择1-3。在/S模式下,应用程序的每次升级都需要在每个客户端重新安装应用程序,这是一项十分繁琐的事情。面对这个实际问题,这里设计了一个通过软件实现自动升级技术方案,弥补了这一缺陷,有较好的参考价值。2设计思路判断一个文件是否要更新,可以通过判断文件的大孝修改日期和文件的版本号来实现3-5。发现最新的则提示用户是否升级。在ebServies中实现一个GetVer的ebethd方法,其作用是获取当前的最新版
3、本。然后将现在版本与最新版本比较,如果有新版本,则进行升级。3自动升级的技术实现(1)编写升级模板文件Update.xl准备一个文件(Update.xl),作为一个升级用的模板。desriptin升级记录/desriptinfilelistunt=4surepath=./update/itenae=usterAppliatin.exesize=value/iteitenae=Interp.SHDV.dllsize=value/iteSHDV.DLL是InternetExplrer的一个组件,该组件负责控制对从eb站点返回的URL和信息的处理。(2)编写ebServies的GetVer方法Get
4、Ver方法用于取得软件的更新版本。ebethd(Desriptin=取得更新版本)PublistringGetVer()XlDuentd=neXlDuent();d.Lad(Server.apPath(update.xl);XlEleentrt=d.DuentEleent;returnrt.SeletSingleNde(versin).Inertest;(3)编写ebServies的GetUpdateData方法GetUpdateData方法用于在线更新软件。ebethd(Desriptin=在线更新软件)SapHeader(sHeader)publiSyste.Xl.XlDuentGetUp
5、dateData()/验证用户是否登陆if(sHeader=null)returnnull;if(!DataPrvider.GetInstane.hekLgin(sHeader.Usernae,sHeader.Passrd)returnnull;/取得更新的xl模板内容XlDuentd=neXlDuent();d.Lad(Server.apPath(update.xl);.lunenang.XlEleentrt=d.DuentEleent;/看看有几个文件需要更新XlNdeupdateNde=rt.SeletSingleNde(filelist);stringpath=updateNde.At
6、tributessurepath.Value;intunt=int.Parse(updateNde.Attributesunt.Value);/将xl中的value用实际内容替换fr(inti=0;i=updateNde.hildNdesi;stringfileNae=path+iteNde.Attributesnae.Value;FileStreafs=File.penRead(Server.apPath(fileNae);iteNde.Attributessize.Value=fs.Length.TString();BinaryReaderbr=neBinaryReader(fs);/这里
7、是文件的实际内容,使用了Base64String编码iteNde.SeletSingleNde(value).InnerText=nvert.TBase64String(br.ReadBytes(int)fs.Length),0,(int)fs.Length);br.lse();fs.lse();returnd;(4)编写客户端的UpDate方法首先引用此ebServies,例如命名为:ebSvs,stringnVer=Start.GetServie.GetVer();if(Appliatin.PrdutVersin.pareT(nVer)=0)update();在本代码中Start.GetS
8、ervie是ebSvs的一个静态实例。功能是:首先检查版本,将结果与当前版本进行比较,如果为新版本则执行UpDate方法。update的作用是将升级的XL文件下载下来,保存为执行文件目录下的一个Update.xl文件。任务完成,退出程序,等待Update.Exe来进行升级。vidupdate()this.statusBarPanel1.Text=正在下载.;Syste.Xl.XlDuentd=(Syste.Xl.XlDuent)Start.GetServie.GetUpdateData();d.Save(Appliatin.StartupPath+update.xl);Syste.Diagns
9、tis.Press.Start(Appliatin.StartupPath+update.exe);lse();Appliatin.Exit();(5)编写客户端的Update.ExeUpdate.exe的功能主要是:首先就是找到主进程;如果没有关闭,则用Press.Kill()来关闭主程序。然后则用一个XlDuent来Lad程序生成的update.xl文件。用xl文件里指定的路径和文件名来生成指定的文件,在这之前先前已经存在的文件删除。更新完毕后,则重新启动主应用程序。这样更新就完成了。privatevidFr1_Lad(bjetsender,Syste.EventArgse)Syste.D
10、iagnstis.Pressps=Syste.Diagnstis.Press.GetPresses();freah(Syste.Diagnstis.Presspinps)/essageBx.Sh(p.PressNae);if(p.PressNae.TLer()=usterappliatin)p.Kill();break;XlDuentd=neXlDuent();d.Lad(Appliatin.StartupPath+update.xl);XlEleentrt=d.DuentEleent;XlNdeupdateNde=rt.SeletSingleNde(filelist);stringpath=
11、updateNde.Attributessurepath.Value;intunt=int.Parse(updateNde.Attributesunt.Value);fr(inti=0;i=updateNde.hildNdesi;stringfileNae=iteNde.Attributesnae.Value;FilEinffi=neFileInf(fileNae);fi.Delete();/File.Delete(Appliatin.StartupPath+fileNae);this.label1.Text=正在更新:+fileNae+(+iteNde.Attributessize.Valu
12、e+).;FileStreafs=File.pen(fileNae,Filede.reate,FileAess.rite);fs.rite(Syste.nvert.FrBase64String(iteNde.SeletSingleNde(value).InnerText),0,int.Parse(iteNde.Attributessize.Value);fs.lse();label1.Text=更新完成;File.Delete(Appliatin.StartupPath+update.xl);label1.Text=正在重新启动应用程序.;Syste.Diagnstis.Press.Start
13、(usterAppliatin.exe);lse();Appliatin.Exit();这里为了简单起见,没有使用异步方法,当然使用异步方法能更好的避免并发调用产生的冲突,这个需要读者自己去添加。4结束语借助ebServies实现软件的自动升级,不仅设计简单,实现起来也很容易,取得了良好的效应,大大减轻了维护的工作量。本方案具有较好的参考价值。参考文献1杨继家,张丽静,张晓蕾面向/S模式下的客户端软件自动升级的实现J微计算机应用,2005(5),290-293YANGJi-jia,ZHANGLi-jing,ZHANGXia-leiAnrealizatinfAutatiallyupdatingr
14、ientingt/SAppliatinSysteJirputerAppliatins,2005(5),290-2932何航校,蒋兆远一种改进的通用客户端自动升级模型及实现J兰州交通大学学报(自然科学版),2005(8),110-113HEHang-xia,JIANGZha-yuanAnIprvedUniversalAutUpgradedelflientanditsRealizatinJurnalfLanzhuJiatngUniversity(NaturalSienes),2005(8),110-1133乌云高娃动态升级在IS系统中的实现与应用J计算机工程与设计,2005(10),2854-28
15、56UYUNGa-aIpleentatinandappliatinfdynaiupgradetehniqueinISJputerEngineeringandDesign,2005(10),2854-28564叶利华,陶宏才,梁田基于的软件在线升级技术J成都信息工程学院学报,2005(2),73-75YELi-hua,TAHng-ai,LIANGTianSftareliveupdatingtehnlgybasednJJurnalfhengduUniversityfInfratinTehnlgy,2005(2),73-755余颖,董旭源,高宏/S模式管理信息系统实现自动升级和维护的方法J佳木斯大学学报(自然科学版),2005(4),200-202Ipleentatinfsftareaut-updatebyebServiesAbstrat:Thesftareaintainingandupdatingisaniprtantsetininthesftarelifeyle.ThispaperakesusefthetehnlgyfebServies、#andXLLanguag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度360有钱联盟(拓展版)数字货币交易服务合作协议2篇
- 2024有试用期劳动合同范本与试用期管理策略解析3篇
- 2025年数字货币支付系统合作协议模板3篇
- 二零二四年度餐饮采购合同某酒店与某咖啡机供应商之间的供需协议
- 2024影视制作公司与网络视频平台版权购买协议
- 2025年度文化娱乐产业财产保全担保协议3篇
- 纺织品基本知识培训课件
- 2024年物联网安全保密协议3篇
- 2024年黄金交易平台运营协议
- 2024年薪酬管理服务外包协议范本版B版
- 中央广播电视大学毕业生登记表-8
- 2023年人民日报社校园招聘72人笔试参考题库(共500题)答案详解版
- 《焊接常用工具》课件
- 山东师范大学《古代文学专题(一)》期末复习题
- 员工内部岗位调换申请表
- 选矿厂建设工程施工组织设计
- 二年级寒假安全教育家长会发言稿
- 信号分析与处理-教学大纲
- 气藏提高采收率技术与方法综述
- 河道整治工程运营维护方案
- 国家医疗保障疾病诊断相关分组(CHS-DRG)分组与付费技术规范(可编辑)
评论
0/150
提交评论