学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 管理学论文 > 物流论文

物流管理系统中程序自动升级的运用研究

来源:学术堂 作者:姚老师
发布于:2016-02-27 共1853字
摘要

  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.

  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站