1引言
随着计算机技术的发展以及服务器等硬件设施的快速提升,B/S(浏览器/服务器)的架构模式所受到的梗桔也越来越小,优点越来越突出,逐渐为大多数编程人员所接受。C/S架构的程序可维护性差、布置困难,升级不方便,使B/S架构即网页版系统应用广泛,而C/S越来越不被人所重视的主要原因之一。虽然B/S的模式优点不可忽略,但C/S(客户端/服务器)模式也因其数据量小、响应时间短、安全性高等优势,在解决几十到上百个用户的局域网中,仍然是一个不错的选择。而根据我厂自身的硬件、客户端的实际情况,我们对物流管理系统采用了C/S模式。然而因为客户端比较分散,应用程序的升级每个客户端都需要重新安装程序一次,特别情况需要现场指导,十分繁琐。那么在C/S架构下的程序当有新版本发布时,为实现客户端自动升级,通过自动升级在物流系统上的应用,阐述C/S架构的程序如何实现自动升级,并取得了很好的效果。
2设计思路
考虑到系统分模块的特性,利用C"语言的特点,将每个模块都生成了、111文件,这样做的特点是文件更新时,只会影响单个更新模块,不影响系统其他模块的使用,而且每次更新的文件小,能实现J决速加载。客户端只需要下载最新的、111文件后,就能实现程序的升级。判别一个文件是否是新文件的方法有几种:文件大小、文件日期以及文件的版本号。物流管理系统的升级采用版本号来识别,每次模块重新生成后,C"语言会自动更新一个版本号,通过与客户端该文件的版本号的对比,发现最新的文件,之后进行自动更新,达到程序升级的目的。
3技术实现
3.1建立ftp网站和更新模版文件update.xml.
在局域网的服务器上,建立一个ftp网站,用来存放升级的文件update.xml和各个模块的(dll文件。该文件用来存放物流管理系统中的所有模块信息以及对应的版本号,如果其中某个模块需要变动,则只需在程序中将该模块重新生成新的、111文件,之后将、111文件的版本号更新到update.xml对应模块
<filename>
<title>fis.dll/1.0.251.254</title>
</filename>
<filename>
<title>mgr.dll/1.0.251.12</title>
</filename>
<filename>
<title>rps.dll/1.0.251.15</title>
</filename>
<filename>
<title>rst.dll/1.0.251.15</title>
</filename>
3.2 客户端存放 update.xml.
该文件在客户端程序安装时一同存放到程序的根目录下,文件保存的内容是程序当前各个模块的信息以及版本号。其内部格式与 ftp 服务器上的update.xml 的格式一致,目的是用来与 ftp 服务器上的 update.xml 文件做对比,查看是否有最新文件。
3.3 编写线程,在登录前加载升级窗口该升级窗口主要是在客户端登录程序时出现,显示内容为需要升级的模块文件和 update.xml 模版文件。
3.4 对比服务器 update.xml 文件和客户端的 update.
xml 文件的内容通过方法分别读取服务器文件和客户端文件,
MyXMLDoc.Load(URLAddress);
XmlNodeList mynodes =MyXMLDoc.GetEle-
mentsByTagName("title");
foreach (XmlNode mynode in mynodes)
{
listBox2.Items.Add(mynode.InnerText);
}
分别将内容存放到 listbox 的容器下,利用 C#语言提供的函数 version 来比较两个 listbox 下每行的模块版本号,发现最新的,并将之显示在第三个listbox 容器中,而客户端能看到的就是第三个 list-box 所显示的内容即需升级的文件名称。
for (int j = 0; j < listBox2.Items.Count; j++)
{
str1 = listBox2.Items[j].ToString().Split('/');
if (str[0] == str1[0])
{
Version v1 = new Version(str[1]);
Version v2 = new Version(str1[1]);
if (v1.CompareTo(v2) < 0)
{
listBox1.Items.Add(str[0]);
}
}
}
确定更新的文件后,利用 ftp 传输协议将最新文件从服务器下载到客户端安转程序的根目录下,从而实现程序的自动升级。
private void downloadfile(string name)
{
string MyWebSite = connvar.Class1.
ftpaddress + name;
FtpWebRequest MyRequest = (Ftp-
WebRequest)WebRequest.Create (new Uri (MyWeb-
Site));
MyRequest.UseBinary = true;
MyRequest.Credentials = new Net-
workCredential("anonymous", "binluobin@163.com");
//MyRequest.Credentials = new Net-
workCredential();
using (FtpWebResponse MyResponse
= (FtpWebResponse)MyRequest.GetResponse())
{
..........
}
}
4 结束语
利用网络传输协议、xml 以及 C#语言等技术特点,通过模块版本号的比较,实现了 C/S 模式下的软件自动升级,取得了良好的效果,极大地减少了软件维护的工作量,为今后的自主研发软件提供了参考。
参考文献:
[1] Christian Nagel.C#高级编程[M].7 版。李铭,译。北京:清华出版社,2008.
一绪论1.研究背景。进入新世纪,随着作为新兴产业之一的现代物流业的迅猛发展,国内的物流公司如雨后春笋般涌现,物流业竞争加剧,作为一名国有企业物流公司的从业人员,如何为公司出谋划策,使公司健康、快速发展,就成为一个亟待解决的问题。我觉得:作...
突发事件的发生不仅会造成人力、物力和财力等资源的消耗还会给我国人民的心灵造成创伤。所以应急物流管理系统的高效运行对突发事件的处理有十分重要的意义。...
随着电子商务的兴起,电商物流也获得了较大的发展,物流运输量以及规模也不断扩大,我国物流行业迎来了新的发展机遇,但也面临着新的挑战。...
相关政府部门、企业和个人并充分掌握这项技术的优势,积极构建现代物流管理系统方案,并从全方位、多角度去优化这项技术的应用质量与水平,以此来推动我国林下经济又好又快发展,最终推动国民经济的发展,为广大人民群众提高健康水平、提高生活品质夯实基础。...
我国目前信息化物流管理的发展还处于初级阶段,部分企业会把很多功能部门合并为一个管理部门,不能起到很好的控制作用,尤其是现代物流企业的业务非常繁多,流程也比较复杂,但是在现代物流管理系统中采用RFID技术能够使物流行业的信息化建设更加完善和便捷...
本文对智能仓储物流管理系统的具体设计进行了详细的分析,希望能为我国物流企业带来一定的参考意见。...
新形势下,产业是诸多县域经济、林区经济发展的关键支撑,加强现代物流管理系统设计工作对于发展经济具有不可替代的作用。本文重点探讨基于RFID技术的供应链物流管理系统设计与应用相关问题。...
物流管理系统的设计与实现是针对物流配送中心业务的一个系统设计,在网上实现所有的业务交易。库存管理模块是物流系统的重要模块之一,是采购模块和销售模块正常运作的基础。...
采用射频识别[1](RadioFrequencyIdentification,RFID)技术,可通过无线电讯号识别特定目标并读写相关数据[2],而无需识别系统与特定目标之间建立机械或光学接触,利用频率信号将信息由RFID标签传送至RFID读写器。通过RFID使智能门禁系统、自动称量...