软件工程论文

您当前的位置:学术堂 > 计算机论文 > 软件工程论文 >

C/S模式下客户端软件自动升级设计与实现

来源:自动化与仪器仪表 作者:贺晓
发布于:2020-03-27 共4846字

  摘要:通过C/S模式的客户端软件自动升级设计与实现, 揭示了在必须采用C/S模式实现业务应用时进行软件及时的自动升级的可行性。在具体应用环境下克服了C/S模式部署困难, 升级不方便, 维护成本高几个不利的因素, 将客户端描述文件中的程序最近一次更新版本号与服务器端升级程序的最近一次更新版本号进行比较, 实现升级。这样将任务合理分配到Client端和Server端来实现, 降低了系统的通讯开销。

  关键词:C/S模式; 客户端; 自动升级;

  Abstract:

  Through the design and implement of client software automatic upgrade for C/S pattem, it opens out a feasibility that carry out software automatic upgrade in time when we must make use of C/S pattern.It overcomes a number of disadvantage complication, for example, difficult deployment, inconvenient upgrade cost maintenance for C/S pattern under the some application environment.It compares program update date and time or version number between client side and server side in description files, implementing upgrade.It can be assign the task rationally and bring in and realize to Client end and Server, have reduced the systematic communication expenses.

  Keyword:

  C/S pattern; client software; automatic upgrade;

软件

  0 引言

  随着网络时代的到来, 由于软件技术的更新换代很快, 客户端在线的升级成为了必然的需要, 所以相应的升级技术就应运而生, 并形成为独立的模块。譬如, 杀毒软件的在线升级, 有时一天会进行好几次。快节奏的信息时代, 新产品的推出的周期在缩短, 在线升级的快慢以及便捷程度, 直接决定着用户对产品的使用量和认可程度。在众多的升级方式当中自动升级是最为流行的一种, 可以说也是最为便捷的一种。

  当今网络结构大体分为两种, 一种是C/S结构即Client/Server (客户机/服务器) ;一种是B/S结构即Browser/Server (浏览器/服务器) .虽然B/S结构愈来愈成为流行模式, 但基于C/S结构的应用程序还广泛地应用于各种行业。对于一些应用软件, 其承受大用户量并发访问的能力常常是应用者重点考虑的内容。

  C/S模式是一种两层结构的系统:第一层是在客户机系统上结合了表示与业务逻辑;第二层是通过网络结合了数据库服务器。它的优点如下:

  第一, C/S的优点是能充分发挥客户端PC的处理能力, 很多任务可以在客户端处理后再提交给服务器, 客户端的响应速度就很快。

  第二, 交互性强是C/S固有的一个优点。在C/S中, 客户端有一套完整的应用程序, 在出错提示、在线帮助等方面都有强大的功能, 并且可以在子程序间自由切换。

  第三, C/S模式提供了更安全的存取模式。由于C/S是配对的点对点的结构模式, 采用适用于局域网、安全性比较好的网络协议 (例如:NT的Net BEUI协议) , 安全性可以得到较好的保证。

  第四, 采用C/S模式将降低网络通信量。B/S采用了逻辑上的三层结构, 但是物理上的网络结构仍然是原来的以太网或环形网。这样, 第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用同一条网络线路。而C/S只有两层结构, 网络通信量只包括Client与Server之间的通信量。所以, C/S处理大量信息的能力是B/S所无法达到的。

  最后, 由于C/S在逻辑结构上比B/S少一层, 对于相同的任务, C/S完成的速度总比B/S快。使得C/S更利于处理大量数据。

  C/S模型作为一种设计准则, 有助于程序员将应用程序和网络通信环境结合在一起。C/S模型将应用程序设计分为客户和服务器问题。

  C/S编程模型将网络应用程序分为两部分:客户部分和服务器部分。按照这种定义, 网络连接的客户方请求连接的服务器方提供服务或信息。连接的服务器方对客户的请求作出响应。也就是说, 在客户/服务器模型中, 网络应用程序完成两个独立的和定义好的功能:请求信息和对请求信息作出响应。请求信息的程序充当客户程序。对请求信息作出响应的程序充当服务器程序。

  很多人认为C/S模式的程序可维护性差, 部署困难, 升级比较麻烦, 维护成本高。因此, 决定选用C/S结构作为管理信息平台模式, 就应该想办法解决客户端应用程序自动升级问题。针对这一问题, 目前主要通过建立辅助应用软件更新信息表来解决, 也有基于API和FTP功能的解决方案。

  1 客户端软件自动升级应解决的问题

  自动升级的过程是, 首先进行网络连接, 当网络连接正常时, 自动检测, 自动查询, 自动下载, 自动卸载, 自动安装, 自动运行。

  (1) 将升级后的客户端程序放置在远程服务器相应目录下, 供客户端查找;

  (2) 系统通过查询服务器中的数据库表, 获取最高的版本号并于当前版本号比较, 若服务器中的最高版本号高于客户端当前版本号, 则提示有该软件的更高版本可供下载;

  (3) 当用户选择下载时, 系统下载需要的文件, 并且自动卸载当前的旧版本, 完成新版本的安装, 并运行之。反之, 提示用户目前使用的已是最高版本, 继续运行。

  2 客户端软件自动在线升级的原理

  (1) 版本检测:在一个应用程序发布以后, 每个客户端发布初始都是一个基线版本, 多数软件开发者喜欢定义为1.0等之类的版本号, 在客户端经历升级以后, 版本型号就不断发生变化。确定一个客户端应用程序是否需要升级, 必须首先进行版本比较。确定客户端需要升级后, 客户端当前的版本号与服务器发布的最新版本进行比较查找要升级下载的文件列表信息到本地;

  (2) 数据传输:客户端在确定须下载的文件列表信息后, 即可从指定升级服务器上下载文件。当然在客户端可升级下载文件之前, 各个版本的程序文件必须第一时间传至升级服务器。下载文件方式可采用肿协议、TCP/IP协议下载或者HTTP方式下载;

  (3) 文件处理:每次更新时, 下载的文件先临时存储在客户端指定目录下, 待全部下载完毕后。复制这些文件到其相应的目录下, 复制完后销毁临时存储的全部文件, 最后修改客户端应用程序的版本型号为升级后的版本号, 以避免重复升级, 升级程序退出并重新启动应用程序。如果应用程序还需完成一些特殊处理, 可在启动应用程序之前进行。

  图1

  3 用Delphi实现在线升级的关键步骤

  使用Serv-U FTP软件架设服务器, 以某播放器在线升级为例。

  3.1 SQL查询的设计

  通过select max (versionnum) as maxnum from serverdata1, 获取到最高版本号;当获取到高版本播放器的版本号时, 通过select pathplayer, pathsetup from serverdata1 where versionnum=ver (ver为maxnum的值) 语句查询serverdata1表, 获取到pathplayer、pathsetup值, 该表项分别记录着播放器的可执行文件及相应安装文件的下载路径。相应代码如下:

  select max (versionnum) as maxnum from serverdata1

  select pathplayer, pathsetup from serverdata1 where versionnum=ver

  向表中插入数值:

  insert into serverdata1 (versionnum, pathplayer, pathsetup) values (:num, :s1, :s2)

  3.2 登录服务器

  TNMFTP部件专门用于FTP协议下的文件传输, 通过它的属性Host (域名) 、Port (端口号) 、Time Out (连接时限) 、User ID (用户登陆名) 、Password (登陆密码) 确定与服务器的连接。

  nmftp1.Disconnect;//首先断开所有连接

  nmftp1.Host:='域名';//通过DNS确定域名, 连接服务器

  nmftp1.Port:=21;//默认端口号为21

  nmftp1.Time Out:=20000;//设定连接时限20秒

  nmftp1.User ID:='liangce';//设定登录用户名

  nmftp1.Password:='111';//设定登录密码

  3.3 文件的上传 (Upload)

  首先获取将要上传播放器的版本号, 这里为防止新上传的版本号与服务器已有的版本号相同, 我们已经在Memo中列出了服务器上目前已有的播放器版本信息。若二者相同, 则用户一提交便给出提示信息, 要求重新输入版本号;否则继续执行下一步步骤文件上传。

  接着上一步, 我们现在要做的工作是其一:选择要上传的文件。这里必须选择两个文件:要上传的播放器可执行文件以及相应的安装程序文件。其二, 就是向服务器上传刚才选择的两个文件。

  Delphi2007提供了Fastnet控件, 其中TNMFTP部件专门用于FTP协议下的文件传输。专用上传函数为:Upload (Local File, Remote File:string) .

  其中, Local File为本地客户端要上传的文件名, Remote File为上传到服务器以后的文件名。

  在上传文件之前, 还应该设置文件上传到哪个目录下, 也就是要明白文件要去的目的地。这里, 我们将服务器的当前目录更改为新版本号的下一级子目录, 具体实现代码如下:

  form1.NMFTP1.Change Dir (form3.Edit1.Text) ;

  其中, form3.Edit1.Text='2005'

  接下来, 我们就可以上传文件了。本设计中实现文件上传的相应代码如下:

  form1.NMFTP1.Upload (form2.Edit3.Text, playername) ;

  //上传新版本播放器的可执行文件

  form1.NMFTP1.Upload (form2.Edit4.Text, setupname) ;

  //上传新版本软件的安装程序文件

  为了更加形象、直观, 我们在状态栏上同时会显示文件上传的进度, 这在目前大多数软件中是很常见的。

  文件上传到服务器的指定目录下以后, 我们还要修改数据库相应表项, 具体实现如下:

  num:=strtoint (form3.Edit1.Text) ;//修改数据库表

  strplayer:='D:\download\'+form3.Edit1.Text+'\'+playername;

  strsetup:='D:\download\'+form3.Edit1.Text+'\'+setupname;

  form2.ADOQuery1.Close;

  form2.ADOQuery1.SQL.Clear;

  form2.ADOQuery1.SQL.Add ('insert into serverdata1 (versionnum, pathplayer, pathsetup) values (:num, :s1, :s2) ') ;

  form2.ADOQuery1.Parameters.Param By Name ('num') .Value:=num;

  form2.ADOQuery1.Parameters.Param By Name ('s1') .Value:=strplayer;

  form2.ADOQuery1.Parameters.Param By Name ('s2') .Value:=strsetup;

  form2.ADOQuery1.Exec SQL;

  以上这段代码就是用来保存我们刚才上传的两个文件的路径信息, 这么做会便于将来文件的检索和下载。当获取到高版本软件的版本号时, 通过SQL语言select语句查询serverdata1表, 获取到pathplayer、pathsetup值, 该表项分别记录着播放器的可执行文件及相应安装文件的下载路径。相应代码如下:

  select max (versionnum) as maxnum from serverdata1

  //获取到最高版本号;

  select pathplayer, pathsetup from serverdata1 where versionnum=ver

  //通过最高版本号获取高版本播放器可执行文件及相应安装文件的下载路径

  最后, 若上传成功, 系统关闭整个界面。

  4 结束语

  本文通过C/S模式下软件在线自动升级的实现, 证明了在必须采用C/S模式实现业务应用时进行软件及时自动升级的可行性。在具体应用环境下克服了C/S模式升级不方便, 维护成本高几个不利的因素, 对打造多元化软件应用架构进行了积极的探索与应用。实践证明, 这一技术的应用对于开发与部署基于C/S模式的应用系统具有重要的借鉴意义。

  参考文献
  [1]岳国华。分布式环境下C/S模式客户端软件自动在线升级的设计与实现[J].西安科技大学学报, 2011, (1) :72-76.
  [2]曾样松。文登敏。C/S模式客户端应用程序自动升级研究与实现[J].现代计算机, 2009, (9) :198-200.
  [3]乔俊玲, 闫晓婷。信息管理系统客户端软件自动升级的实现[J].福建电脑, 2007, (4) :121-124.
  [4]唐卫宁, 李艳, 耿国华。基于C/S和B/S混合结构的科技项目申报管理系统的设计与实现[J].计算机应用与软件, 2004, 21 (9) :107-110.
  [5]刘伟, 耿英三, 王宣东。软件自动升级系统的研制与开发[J].计算机工程与应用, 2002, 38 (15) :150-154.
  [6]贺广新。c/s模式下客户端软件自动升级的设计与实现[D].西安电子科技大学, 2013.
  [7]吴秀莹。Delphi程序设计项目教程[M].北京:电子工业出版社, 2011.
  [8]肖江文, 廖幼文。C/S结构下客户端软件自动升级的方法研究[J].计算机工程与应用, 2005 (35) :95-97.
  [9]Frederik Poulsen.Delphi-Primary Source Edition[M].American, Nabu Press, 2013.
  [10]JJ Yuan.Design and Implementation of Client Software Autoupdate[J].Journal of Xingtai Polytechnic College, 2012.

作者单位:四川信息职业技术学院
原文出处:贺晓春.基于C/S模式的客户端软件自动升级设计与实现[J].自动化与仪器仪表,2017(03):137-139.
相关内容推荐
相关标签:软件设计模式论文
返回:软件工程论文