1、基于 HTTP 协议的嵌入式应用程序通用自动更新平台计算机与现代化2009 年第 3 期 JISUANJIYUXIANDAIHUA 总第 163 期文章编号:1006-2475(2009)03-0046-03基于 HTTP 协议的嵌入式应用程序通用自动更新平台余荣华,吕维先(中国地质大学( 武汉)信息工程学院,湖北武汉 430074)摘要:针对嵌入式应用程序在发布之后版本难以维护的问题 ,本文提出了基于HTTP 协议的解决方案,并对该解决方案进行了深入讨论.最后,本文从文件压缩及动态创建序列号等方面提出了改进意见,对解决版本维护难题有一定的参考意义.关键词:嵌入式;版本控制;网络更新中图分类号
2、:TP393 文献标识码:ABuildingAnAuto-updatePlatformforEmbeddedApplicationBasedonHTTPProtocolYURonghua.LUWeixian(FacultyofInformationEngineering,ChinaUniversityofGeosciences,Wuhan430074,China)Abstract:Thispapertargetsonthedifficultiesinversionmaintenanceafterthereleaseofaembedded 印 pcmion.Itbringsoutasolutio
3、nbasedonHmprotoco1.andadeepdiscussionispaidtoit.Somesuggestionsaboutfilecompressinganddynamicalseri-alareobtained,anditmakessomereferencesenseinresolvingproblemsonsoftwareversionmaintenance.Keywords:embedded;versioncontrol;networkupdating1 问题的提出嵌入式应用程序是指运行在嵌入式系统的应用程序,它控制着系统的运作和行为,通常面向特定应用.为了提高执行速度和系
4、统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中.嵌入式系统本身不具备自主开发能力,设计完成以后用户通常不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发.嵌入式应用程序多用于 PDA,移动计算设备,电视机顶盒,手机,工业自动化仪表与医疗仪器等设备上.嵌入式应用程序需要设备安装,拷贝或者烧录应用程序所需的文件.程序开发者对程序进行分发之后,嵌入式设备通常会通过各种销售渠道进入到市场,之后应用程序一般很少改动.然而分发之后版本如何控制,新版本如何再分发是嵌入式应用程序所面临的问题.新版本可能是功能更强大的替代版本,也可能是对某个重大缺陷的
5、修补.如果收回每台设备再分发,则成本很高.随着新版本的不断发布,设备运行的版本也越来越复杂,版本,数据结构的兼容也成为后续开发必须考虑的问题.兼容性方面的问题越多,开发及维护成本越高.2 问题的分析随着以太网芯片成本的降低及因特网的普及,通过网络来实现嵌入式应用程序的更新升级已经成为可能.在程序中加入在线更新的功能将能有效地解决前面讨论的版本维护难题.关于通信协议,可以编写程序实现 Socket 通信,也可以采用比较成熟的唧(HypertextTransterProtocd)协议.考虑到诸多因素,笔者选择了 HrITP 协议.HrITp 协议的主要特点概括如下:(1)简单快速: 客户向服务器请
6、求服务时 ,只需传送请求方法和路径;(2)由于 HTTP 协议简单,使得 HqTP 服务器的程序规模小,因而通信速度很快;收稿日期:2008-03-28作者简介:余荣华(1984 一),男,浙江衢州人,中国地质大学信息工程学院硕士研究生,研究方向:人工智能,搜索引擎技术,计算机网络应用;吕维先(1947.),女,湖北武汉人,教授,硕士生导师,研究方向:空间数据库,数据挖掘与知识发现.20o9 年第 3 期余荣华等:基于哪协议的嵌入式应用程序通用自动更新平台 47(3)灵活:HrITp 允许传输任意类型的数据对象,务器后,下载属于它的文件列表.l 用户启动嵌入式应用程序 II 程序启动后台更新检
7、测程序 ll 检测到新的版本 ll 比较服务上和本地的文件差异 II 下载比较结果中的差异文件 Il 擦除旧文件重写应用程序文件 Il 关闭设备或重新启动 I图 1 表关系图 1 是数据表关系图,它们的 ER 关系都是一对多.平台中有多个软件产品,存储在 UProducts表中.每个软件产品有多个用于设备验证的序列号,存储在 UClients 中.序列号是设备的凭证,只有授权的序列号才能访问平台.UClients 表还标出了该设备允许升级的版本范围.每个软件产品对应多个文件,通过服务端脚本输出文件列表.设备连接上服iles,一Fil【)481lJ)Name/bin/tep.txt/NameSi
8、ze14834/SizeTimeStamp20080316223956/IimesStamp/File一File11)49/l1)Ntme/SomeExe.exe/NameSize689466/SizeTimeStamo2008O316223956/TjmcStamn/nlf】/File.s图 2XML 结构图 2 是前面讨论的文件列表的 XML 结构,它用于比较设备文件与服务器上的各个文件的差异.其中的时间戳是主要比较字段,文件名用于记录定位.4 设备工作流程需要指出的是表 1 列出的是基本流程,实际中设备工作流程会比表 l 复杂得多.主程序启动之后,创建自动升级程序的线程.该线程在后台运行
9、,首先读出产品的序列号,通过 URL参数传值的形式传到 Web 端.此处传值可以更加灵活,可以在用户允许的前提下,将更多的信息传给服务器,例如当前软件版本,设备操作系统版本,设备计算机硬件信息等.运行在服务器端的脚本响应请求,判断序列号是否合法,即序列号是否正确,是否过期.判断合法后,输出与该序列号对应的软件的所有文件列表.自动升级程序开始通过 HTrP 协议下载这个列表.下载完毕后读出上一次升级保存下来的文件列表,并与下载下来的列表进行对比,通过时间戳对比找出新文件.通常只要时间戳不一样就将文件加入到需要下载的文件列表中,也可以采用时间戳转成浮点数后对比大小的策略.例如平台中放的是稳定的正式
10、版,而有些设备已经通过其他途径得到版本更高的测试版.第二种策略就可以避免高版本文件升级之后版本降低.这也是采用时间戳,而不是采用文件MD5 唯一哈希值的原因.得到新文件列表之后,再次通过 H1TrP 协议逐一下载新文件到缓存目录中.下载新文件的地址由文件编号和序列号共同确定.每下载一个文件,更新一次本地的文件列表.如果出现网络中断,用户退出等异常,下次启动可以跳过已经下载过的文件.虽然这不是严格意义的断点续传,但在一定程度上提高了程序的容错能力.数据全部下载完毕之后,询问用户是否立即应用计算机与现代化 2009 年第 3 期更新.如果是,则退出主程序,将缓存文件夹中的文件移动到主程序所在的目录
11、中,并覆盖;否则保持缓存中的文件,供下次升级使用.5 改进网络状况很差的时候更新所需要的时间很长.对于该问题,可以对文件进行逐个 ZIP 压缩 J,通过HTFP 协议传输压缩流,而不是文件本身的数据流.设备下载之后进行解压缩.本文采用对文件逐个压缩,而不是整体打包.如采用整体打包,会出现设备只需要更新少数文件而不得不下载整个压缩包的情况;而且整体打包也对断点续传提出了更高的要求.出于某种原因,有时需要更多考虑数据安全.例如未授权的序列号不能获得新版本的文件,或一个序列号只能对应一台设备.对此可以采用动态序列号的策略,即下载完文件列表时或更新结束时,都将数据库中原有序列号作废,动态创建新的值.对
12、于重大缺陷的修复更新,更希望能强制更新.对此可以在自动更新程序发现新版本时,强制停止主程序的响应.通过这一策略甚至可以做到所有的新版本发布之后,设备迅速跟进,全部更新到最新版本.笔者在一台工业测试仪器的 WinCE 环境下,使,用微软的 C 撑语言来实现,经过反复测试,发现经ZIP 压缩之后,对网络要求低了很多,更新效率提高很多.通过动态序列号及强制更新策略也基本能保证设备版本可控.参考文献:1沈连丰.嵌入式系统及其开发应用M.北京:电子工业出版社,2005.2W3C.HypertextTransferProtocolovervjewDB/OL.http:/www.w3.org/Protoco
13、ls/,1998-04-03.3微软.SQLServer 开发人员中心 DB/OL.http:/ms-dn2.microsoft.corn/on-us/sqlserver,20021213.4DateCJ.数据库系统导论M.北京:机械工业出版社,2000.5莫勇腾.深入浅出设计模式(C#/Java 版)M.北京:清华大学出版社,20o6.6KevinHoffman.NetFramwork 高级编程M.北京: 清华大学出版社,2002.7W3C.ExtensibleMarkupLanguage(XML)DB/OL.ht-tp:/www.w3.org/XMIV,2001-0911.8SharpZi
14、pLib.NETZipLibraryDB/OL.http:/www.ic-,2006-05-09.9陈钟.c#编程语言(程序设计与开发)M.北京:清华大学出版社,2006.1O殷人昆.数据结构 (用面向对象方法与 c+描述)M.北京:清华大学出版社,1999.11刘化君.计算机网络原理与技术M.北京:电子工业出版社,2005.12李涛.网络安全概论 M.北京:电子工业出版社,2004.13秦亚红.网络分析 ,体系结构与设计M.北京:电子工业出版社,2005.14兰少华.TCP/IP 网络与协议M.北京:清华大学出版社.2006.(上接第 45 页)参考文献:1TrecordiVittorio,
15、VerticaleGiacomo.Architectureforeffi.eientpush/pullWebsurfingC/IEEEInternationalConferenceonCommunication.NewOrleans,USA,2000.2GarrettJJ.AJAX:ANewApproachtoWebApplicationsEB/OL.http:/www.adaptivepath.corn/,2005-02?18.3CarzanigaA,RosenblumDS,WolfAL.Achievingscalabilityandexpressivenessinanlnternetsca
16、leeventnotificationServ-iceC/19thACMSposiumonPrinciplesofDistributedComputing(Porx000).NewYork,USA,2OO0.4EugsterPTh,FelberP,GuerraouiR,eta1.Themanyfacesofpublish/subscribeJ.ACMComputingSurveys,2003,35(2):114131.5BanavarG,ChandraT,MukherjeeB,eta1.Anefficientmulficastprotocolforcontent?basedpublishsub
17、scribesys-temsC/Proceedingsofthe19thIntemationalConferenceonDistributedComputingSystems(ICDCS99).Austin,1999.6StarovicG,CahillV,TangneyB.AneventbasedobjectmodelfordistributedprogrammingC/PrecoftheInt.Conf.onObjectOrientedInformationSystem.London,1995:72-86.7PietzuchPR,BaconJM,HermesA.Distributedeven
18、tbasedmiddlewarearchitectureC/Submittedtothew0rk.shoponDistributedEventBasedSystems(DEBS).Vienna,Austria,2002.8马建刚,黄涛 ,汪锦岭,等.面向大规模分发式计算发布订阅系统核心技术J.软件,2OO6,17(1):135.136.9万长林,鄢志辉 ,等.对基于踟 rrP 推技术聊天室的研究J.南昌大学(工科版),2005,27(1):95-96.to倪凯,冯翔 ,鲁铭,等.基于 J2EE 架构的 WebGIS 协同平台系统集成J.小型微型计算机系统,2007,28(1):133.134.11FlanaganD.Javascript 权威指南M.0Reilly,2001.12汪洋,谢江 ,王振宇.基于事件的发布一订阅系统模型J.计算机科学,2006,33(1):111-116.13杨华.AJAX 及在 ASP.NET 中的实现J.现代电子技术,2006,29(12):79-80.