应用系统自动升级 毕业设计论文

上传人:仙*** 文档编号:27811418 上传时间:2021-08-20 格式:DOC 页数:43 大小:699.13KB
返回 下载 相关 举报
应用系统自动升级 毕业设计论文_第1页
第1页 / 共43页
应用系统自动升级 毕业设计论文_第2页
第2页 / 共43页
应用系统自动升级 毕业设计论文_第3页
第3页 / 共43页
点击查看更多>>
资源描述
XX院本科毕业设计(论文)应用系统自动升级学生姓名: X X 学生学号: 院(系): 计算机学院 年级专业: 07网络工程 指导教师: XxX XXX教授 二一一年五月XX本科毕业设计(论文) 摘 要摘 要随着软件需求的变化和技术竞争的加剧,软件供应商不断提供更多更好的软件产品和服务来满足日益变化的市场需要。对于通用的软件产品来说,用户数量众多,更新频繁,运行的软件平台和网络环境多,因此在每次新产品发布时如何简单、高效地帮助用户更新换代软件产品,成为领先的软件供应商关注的课题。对商品化软件来说,良好的售后服务是至关重要的,而软件升级是软件售后服务中非常重要的一个部分。在平时开发C/S系统时,大家都清楚C/S系统的最大弱点就是不利于维护,当客户端程序更新时不得不到每个用户的机子上去部署。虽然微软的Smart Client技术使得传统的C/S系统更加利于维护,但现在还不打算采用。Smart Client是一个不同于以往常见的应用程序的比较复杂的系统,所以它的调试技术也比以前复杂的多,至今仍然是一个难点。因为,开发的代码大都不是一个可执行的应用程序,更多的是dll库文件,这样就无法直接调试,必须得写出一个调试程序来进行间接调试。同时因为松耦合和网络加载的原因,使得本地紧耦合调试和实际运行情况多少有些不同。这一点还没有有效的解决办法。尽管VS2005 推出了Click Once,也具有实现自动更新的功能,但其可控性差和不够灵活等缺陷,导致其实际用途较少。而Updater Application Block组件的配置和使用相似地麻烦,所以我们选择采用传统的自动更新的程序。自动更新的步骤就是客户端检查服务器端的版本号是否比本地的新,如果不同于本地版本,就向服务器请求下载文件。在这里我们服务器端部署的升级文件是任何人都可以下载的。从上面的描述可以看出,其实所有系统自动升级的步骤都是类似的,所以做一个通用的自动升级程序能够减少不少麻烦。关键词 自动更新,服务器端,版本号XX本科毕业设计(论文) ABSTRACTABSTRACT With the increasing changes of the Software requirements and the competition in technology, Software vendors try to supply more and more convenient software and service to meet the market. For general software products, more and more users are involved, they have to adapt to all kinds of software platform and network environment, and they have to be updated frequently. So its very important for the Software vendors to think about how to supply more simple and efficient products.As is known to all, its hard to maintain the C/S system. Once the Client updated, we have to setup the software for every computer to make them update. Though Smart Client from Microsoft made it very easy to realize, I ignore it. Smart Client is a more complex system than that we have seen .Which makes it become very difficult to debug the code. When we code with the help of Smart Client, it will produce some DDL files, which cannot be debug like applications. Moreover, there are some difficult cases existed because of loose coupling and loading. We have not overcome it so far.Though Microsoft have released VS2005 which contained a component named Click Once, which could realize update. Unluckily, it has some defects such as bad controlling and bad flexible. May you will think about Updater Application Block, you got it, but its trivial configurations make us tired. And its very inconvenient to configure and use the Updater Application Block Component. So we choose to adopt traditional automatic updates program. So in the end, I select the traditional strategy to complete this topic. Automatic updates procedure is to client check when server version number is newer than that of client, and deciding whether to update depend on the results. Every one could download the file which we deployed on the server. According to the description above, it is similar to all kinds of Automatic update software. So if we design general purpose software, it will reduce lots of trouble.Key words automatic updates,server, versionIXX院本科毕业设计(论文) 目 录目 录摘 要IABSTRACTII1 绪论11.1自动升级的背景11.2自动更新系统的研发与现状11.3 什么是软件升级31.4 软件升级的意义31.5 软件升级的现状41.6 应用程序的升级41.6.1获得最新版本的软件41.6.2对应用软件进行升级51.7 常见的升级方式61.8 软件升级原理71.9 论文主要的工作内容72 相关开发技术和工具介绍82.1 Windows应用程序介绍82.2 .NET Framework简介82.3 ASP.NET的发展基础92.4 C#编程语言102.5 开发平台112.6 通信协议112.7 相关知识122.7.1 委派122.7.2 事件122.7.3 线程132.7.4 泛型132.7.5 装箱与拆箱143 需求分析153.1 应用需求分析153.2 系统功能需求163.2.1系统主要功能分析163.2.2自动升级原理图174 系统设计184.1 系统设计思想184.2 系统目标205 系统实现215.1 服务器端215.1.1 IIS的安装与配置215.1.2 启动Internet信息服务器(IIS)215.1.3 服务端配置文件格式225.1.3 服务端文件的配置过程225.1.4 浏览器访问测试245.1.5上传文件到服务器端255.2 客户端265.2.1 客户端配置文件格式265.3 代码设计266 结论33参 考 文 献35致 谢36IIIXX本科毕业设计(论文) 1 绪论1 绪论1.1自动升级的背景即便拥有多年软件开发经验的团队也不敢保证自己所做的软件是完美的,它或多或少会存在一些缺陷,甚至会存在诸多的漏洞。在软件的使用中,也会不断发现更多的问题,这些问题可能是软件本身的问题,也可能是运行的软硬件环境变化造成的,而且用户也会对软件不断地提出新的要求。所以,软件的升级是不可避免的。对于用户而言,软件升级可以修补漏洞,确保数据安全;可以更新和增加新功能。对于软件开发商而言,为了满足市场需求,也需要不断地升级自己的软件,力求做得更好。相信有许多程序员都喜欢用Winform做开发吧?因为Winform相对Webform而言,优点是,功能更强大,编程更方便。但是它的缺点,就是软件的安装及维护是相当麻烦的,要实现软件更新,需要到客户端一台一台地升级。当然,实现应用系统自动更新功能有很多方法,但是他们的基本原理是大同小异的。自动更新的步骤就是客户端检查服务器端的版本号是否比本地的高,如果高于本地版本,就向服务器请求下载文件。在这里我们服务器端部署的升级文件是任何人都可以下载的。从上面的描述可以看出,其实所有系统自动升级的步骤都是类似的,所以做一个通用的自动升级程序就可以减少不少麻烦。实现软件的自动升级存在的困难:第一,为了查找远程服务器上的更新,应用程序必须有查询网络的途径,这需要网络编程、简单的应用程序与服务器通讯的协议。第二是下载。下载看起来不需要考虑联网的问题,但要考虑下载用户请求的文件,以及在没有用户同意时下载大文件。友好的自动更新应用程序将使用剩余的带宽下载更新。这听起来简单,但却是一个技术难题,幸运的是已经有了解决方法。第三个考虑因素是使用新版应用程序更换原应用程序的过程。这个问题比较有趣,因为它要求代码运行时将自己从系统删除,有多种办法可以实现该功能,本文程序主要通过比较新旧版本的版本号来实现替换新版本应用程序的功能。 1.2自动更新系统的研发与现状自动更新特性是通用软件的常用特性,当前国内外各大软件提供商都对软件更新系统投入相当的关注和研发力量,并且已有一些软件产品已经发布。经研究,当前市场上存在的更新工具主要有四种:1)基于Client/Server 架构的自动更新工具此类工具界面嵌入在产品程序中或与产品程序集成,用户启动产品客户端,程序搜索可更新的软件包,下载后自动安装。代表产品有金山毒霸和诺顿(Norton Antivirus)。以金山毒霸为例,其产品特性如下:u 支持20多个服务器,从中选择最快的服务器下载u 升级工具嵌入在产品中,升级界面为定制的向导式界面u 更新前通过检测分析来确定要下载和更新的内容u 文件支持HTTP下载,不支持FTP下载,支持代理服务器,不支持断点续传u 更新过程中若有失败则可以撤销更新u 支持更新自身程序u 更新结束时能重启软件2)直接使用安装程序的自动更新系统此类系统能自动检测是否有更新,后台下载安装程序,用户运行安装程序的形式来安装,一般用于升级补丁程序。代表产品有Microsoft Windows Update工具。其产品特性有:u 支持单服务器,支持但产品u 后台下载安装程序,安装程序是一个完整的可执行程序包,下载时用户无需操作,下载完成通知用户u 采用系统默认的网络设置下载,由于安装包文件会比较多,下载量大,支持断点续传u 用户运行安装程序,安装过程就是安装某个更新包,安装后可卸载更新包u 安装结束时能重启软件此特性演变成Microsoft.NET中的智能更新服务3)基于Web/ActiveX的自动更新工具此系统的界面为WEB页面,用户首先接受下载一个具有更新功能的ActiveX控件,此ActiveX控件自动运行,搜索下载可更新的内容,并在下载后自动更新。代表产品有Microsoft Platform SDK Update工具。u 界面是WEB页面进行,通过运行Active控件执行功能u 一个产品一个站点,完全定制的更新内容u 后台自动检测、下载和安装软件u 采用浏览器的网络设置,下载不支持断点续传u 更新失败不可撤消更新u 更新后能重启的软件4)采用后台服务形式的自动更新工具此系统采用后台服务的方式运行在用户计算机,服务程序自动检测、下载和安装软件。如Install Shield的自动更新服务系统。制作产品安装程序时设定更新服务信息,安装产品时将服务程序安装到用户计算机,安装程序和更新服务程序集成得比较好u 系统启动服务程序,后台检测、下载和安装软件包,没有更新界面u 采用浏览器的网络设置,下载支持断点续传u 更新失败可撤消更新u 更新后能重启的软件1.3 什么是软件升级软件产品技术复杂,功能需要不断完善,要不断更新、修改,这就是软件升级。对于软件版本,前一部分数字的递增表示该软件产品有较大的,往往带有实质性的改进,后一部分数字的递增则表示只有局部的、较小的改进,通常是对较小的bug或安全性的修改或对性能的较小的提高。为了为维护软件项目,我们提出了对版本进行管理控制的要求。而对于用户来说,版本直接体现在版本号命名上。那么,如何对版本号进行命名呢?我查了许多资料,希望能够解释的比较具体。下面让我们看一下比较普遍的三种命名格式。GNU风格的版本号命名格式:主版本号.子版本号.修正版本号.编译版本号示例:1.2.1, 2.0, 5.0.0Windows 风格的版本号命名格式:主版本号.子版本号修正版本号.编译版本号.NET Framework 风格版本号命名格式:主版本号.子版本号.编译版本号.修正版本号在本文中,软件升级包括安装计算机上已有软件的新的版本、从原版本上升到新的版本、对现有软件的更新。1.4 软件升级的意义面对目前计算机应用的普及,越来越多的行业离不开计算机,这无疑给计算机软件开发人员和软件供应商带来很大压力。对计算机软件行业而言,计算机技术的普及既是挑战也是机遇。必须承认,软件供应商已经为我们提供了优质的软件和服务,但这仍然不能满足用户们的需求。几乎同时在每个行业的每台计算机上都同时安装了数十款软件,对于用户数量较多的企业,寄希望于系统维护人员去更新每一台计算机上的应用软件简直是天方夜谭。他们更希望软件供应商能够提供带有自动更新功能的软件,这样似乎更人性化。面对这些需求,本课题试图寻求一种Windows 应用系统从开发和变化的角度来适应市场需求和工程领域的实际需求,以减少系统维护人员的压力,提高他们的工作效率,以求得最大的经济效益和社会效益。在软件工程中,软件升级属于软件维护阶段。通常有四类维护活动:改正性维护,即诊断和改正软件使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使他更加完善;预防性维护,即修改软件为将来的维护活动预先作准备。软件维护是软件生命周期中的一个重要组成部分,软件维护的成本高达开发成本的四倍左右。每一次维护活动以后,软件商通常会修改软件的版本号,即又有了一个新的版本,如果用户要想使用新的版本,就必须要升级。由此可以看出,软件升级具有重大意义:可以改正软件中的错误,适应新的软硬件环境,完善软件功能,以及为以后的升级做准备。软件升级分为两种,一种是从一个版本升级到另一个版本,软件版本号的第一数字发生变化,这种升级一般是对原版本有了较大的改进;另外一种是对软件的副版本号发生变化,这种升级只对软件做了较小的改进,我们叫做打补丁。1.5 软件升级的现状各个软件厂家都在不断推出自己软件产品的新版本,从而增加软件的功能,补充产品的性能,补全漏洞,提高竞争能力。用户为了自己使用的方便和避免各种各样由于软件问题引起的错误,也需要对常用软件进行更新。我们常见的需要升级的软件有杀毒软件、驱动程序、操作系统,浏览器以及第三方软件应用程序等。1.6 应用程序的升级应用软件包括我们常用的办公软件,如WinZip、WinRar、Office软件等。还包括在某一行业通用软件,以及某单位自行开发的软件或请软件开发人员开发的软件,如建筑行业的预算软件。1.6.1获得最新版本的软件当我们熟悉的软件推出新的版本可以通过以下方式获得:1)商业软件找到原经销商付费升级;免费派送;2)免费软件网上免费下载升级,如微软很多产品可以直接到Microsoft官方网站下载。 3)共享软件可以从软件主页上下载试用版,注册用户会有E-mail通知。1.6.2对应用软件进行升级应用软件的升级分为以下四种情况:1)需要删除旧版本的软件。有些软件升级需要删除原来的旧版本。如著名的DirectX 8.0强化了图像质量和音频效果,但如果你已经安装过它的测试版,那么在升级时就会无法安装,需要卸载原来安装的版本。2)需要无后台程序运行的软件。有许多软件在安装时要求无后台程序同时运行。虽然我们看到“建议在安装时关闭其他应用程序”的提示总是不太在意,但有的软件却对这方面比较敏感,如智能陈桥五笔输入软件,他在安装时不允许旧版本的陈桥五笔处于运行状态。3)升级时需要相应支持的软件。有一些软件安装需要其他文件的支持,如游戏程序一般需要较高版本的DirectX的支持,还有一些数据库软件需要VB、VC运行库或ODBC的支持等,若安装程序检测到条件不足时,安装程序就会无法进行下去。这时可以到原下载网站去下载支持文件或者根据提示信息重新安装有关的软件。4)只需要进行在线更新的软件按。有些软件可以自动链接到厂家或软件公司的网站看是否有新的更新的版本,如果有新的版本就进行升级。总的来说,绝大部分应软件升级的要求并不高,只要直接执行Setup.exe文件即可,有些软件的升级更简单,只需要将相应文件拷贝到原安装路径下覆盖原文件即可。本文采用的就是这种最简单的方案。采用通用的方法,即比较Client和Server两端配置文件中版本号的大大小来决定是否有更新,这种思路很通用。1.7 常见的升级方式常见的升级方式有以下几种,每种方式都有自己的特点,用户可以根据自己的情况选择不同的升级方式:1)下载升级包从软件商的网站或其他网站下载软件升级包,然后运行其中的可执行文件,就会对原有软件进行升级。比如我们常会在杀毒软件的网站上看到各种各样的升级包。这种升级方式比较简单,特别适合本机不能上网的用户,如果几台计算机安装了同一款软件的同一版本而相互之间又没有联网的情况下,此种升级方式是比较合适的。2)在线升级这种方式可谓“自动化”升级,用户只需要保证网络是畅通的,点击升级软件界面上的“在线升级”或“自动升级”按钮,软件就会自动连接到相应的网站上去,检查本机上已安装的组件,然后列出网站上可更新的内容。如果用户点击“确认升级”按钮,就会自动更新本机已安装的软件,然后重新启动该软件,就是现在的最新版本了。这种升级方式是最简单的,用户只需要按照提示一步一步进行就可以了,即使对电脑不熟悉的人都可以完成软件的升级,但是必须保证网络是畅通的,如果网络中断了,那么升级失败,软件还是原来的版本,可以在网络通畅的时候重新升级。3)局域网升级有些软件会提供从局域网上升级的功能。如金山毒霸。首先将服务器上的金山毒霸升级到最新版本。然后将服务器上的金山毒霸安装目录设置为只读共享,并将局域网其他机器上的独霸升级程序设置为“本地、局域网上升级”,升级目录设为服务器上独霸安装目录下的Update目录,选定路径就可以自动升级了。这种方式对于网络管理员是很省时省力的,但是目前很多软件没有提供这种升级方式,所以网络管理员通常采用Ghost进行备份安装。4)覆盖安装此升级方式就是直接将新版本软件覆盖旧版本软件,从而达到升级的效果。但是需要注意的是新本跟旧版软件的安装目录必须一样,否则升级不成功。如我们常常从一种操作系统升级到另外一种操作系统。这种升级方式的好处是不管是系统软件还是应用软件,升级后都保持原来的设置,不需要重新设置,特别是对操作系统,采用这种升级方式我们不需要重新安装大量的应用程序。5)移除后安装这是很多软件作者建议的安装方式,如果使用第四种方法升级失败了,那么建议用户使用这种方式。这种方式将原版本删除后再安装新版本,可以保证安装的完整、准确。在移除旧版本的软件之前,如果软件带有数据库,或其他用户资料,则应保存数据库的内容或将数据导出,安装完新版本之后再导入,也有软件升级时提供了数据自动备份的功能,但是目前这种软件很少。由于是完整的安装,这种方式需要的时间比较长。本文也是采取这种方式。1.8 软件升级原理虽然升级方式多种多样,但是他们的原理是大同小异的,就是把新版本的软件与计算机上已安装的软件进行对比,然后将旧版本中欲更新的部分换成新版本软件中相应的部分。例如升级杀毒软件就是更新病毒库,有经验的用户甚至可以在病毒库中加入新的病毒代码,从而预防新的病毒。在更新硬件的驱动程序时,就是用新的INF文件代替系统中旧的INF文件(在Windows 2000系统中,系统盘的WINNTINF中存放的全是驱动程序文件,在其他系统中,驱动程序存放在系统盘的WindowsINF文件夹中)。在进行完全安装时,则进行了较大的改动。我们也可以看成是用新的部分代替原软件中旧的部分,只是替换的部分很多。为了便于升级,很多软件采用了模块化设计的思想,这也是软件发展的方向。任何整体都是由部分组成的,将一个软件分为若干个功能模块,每个模块完成一个任务,那么在升级的时候对相应的模块进行升级,而不影响其他部分。1.9 论文主要的工作内容本论文主要的工作内容包括:1. 分析课题的可行性和需求分析说明;2. 根据选定的开发方案,对解决方案的功能模块进行分析设计,以及根据功能模块的需要详细设计出数据存储方式和存储结构,最后根据系统实现的功能结合系统数据存储方式选择相关技术和平台;3. 根据制定的开发方案总体设计和详细设计的精神,开发出相应的应用程序,并实现课题预期的功能和目标;37XX院本科毕业设计(论文) 2 相关开发技术和工具介绍 2 相关开发技术和工具介绍2.1 Windows应用程序介绍Windows应用程序又称GUI(图像用户界面)应用程序,它在我们计算机中无处不在,它在软件开发历史上曾风靡一时,且至今仍在众多的系统开发中在占有一席之地。Windows应用程序的设计一般采用C/S (Client/Server,客户机/服务器)结构进行开发。C/S结构是大家熟悉的软件系统体系结构,它通过将任务合理分配到Client端和Server端,降低了系统的通信开销,可以充分利用两端硬件环境的优势。C/S结构是相对现今的另一种开发模式B/S结构而言,B/S机构开发是随着Internet的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面是通过客户端浏览器来解析呈现,其主要逻辑是在服务器端实现。在现今的开发模式中B/S结构也有其自身的优势:它采用弱客户端,客户端仅需要一个浏览器解析完成,其它的实现一般采用服务器端动态技术。但是其相对C/S开发有很多的问题呈现,如交互界面丰富性,安全问题等方面,所以至今C/S结构在软件开发中仍有不可取代的地位。在Windows应用程序的开发技术平台主要有C+的MFC开发、SUN公司的J2EE开发平台上的GUI编程、VB与Delphi上的开发以及微软的.NET平台都提供了相应的开发。这些技术各有所长,其中最出名的就是Delphi和.NET平台的开发模式,它们都以快速开发而著称,但VB语言的落后呈明显趋势,现今微软在平台系统上的优势和前沿的可复用性设计,大大的推动了.NET技术的快速应用。很多Windows应用程序都采用了微软的.NET技术来实现。2.2 .NET Framework简介.NET Framework是Microsoft推出的新开发平台,它简化了各种软件结构的开发,并在Visual Studio 这个强大的IDE配合下,加快了软件系统开发的效率和缩短了软件开发的周期。.NET Framework是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件,它具有两个主要组件:公共语言运行库(CLR)和.NET Framework类库。CLR是.NET Framework的基础。你可以将它的运行库看作一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),强制实施严格的类型安全以及可确保安全性和可靠性的多种形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,.NET中绝大部分都属于这类,而不以运行库为目标的代码称为非托管代码,如指针等。.NET Framework的另一个主要组件就是类库,它是一个完全面向对象类型安全的可复用类库集合,我们可以使用它们来开发多种应用程序,这些应用程序既包括传统的命令行(控制台应用程序)和图形用户界面 (GUI,即一般的Windows应用程序)应用程序,也可以进行基于B/S的ASP.NET Web开发如Web Form 、ASP.NET MVC和 Web services等),以及Remote、WCF、WWF、WPF等微软.NET的开发新技术新模式。.NET Framework可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。Microsoft于2005年推出了VS2005中集成了.NET Framework2.0,于.NET Framework1.0的基础上增加了很多类库,使其功能更强大,在2008和2010年分别推出的VS2008、VS2010中集成了.NET Framework3.5和.NET Framework4.0,更添加了多种开发新技术。使得.NET平台更加的强大,并一步一步的加快软件开发的开发效率,缩短软件的开发周期2.3 ASP.NET的发展基础随着PHP,JSP的技术的出现,ASP的王者地位受到了严峻的挑战。JSP的技术在执行效率,安全性等特性上已经完全超过了ASP,同时还具有ASP所无法比拟的跨平台性, JSP的诞生,使越来越多的人开始选择它,ASP技术面临前所未有的危机。 在这种情况下,Microsoft公司很快发布了其宏伟的“Windows.NET”计划。ASP.NET不仅仅是下一版本的 Active Server Page (ASP);它是统一的Web 开发平台,用来提供开发人员快速生成企业级 Web 应用程序所需的服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,用于生成更安全、可伸缩和稳定的应用程序。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强该ASP 应用程序的功能ASP.Net可完全利用.Net架构的强大,安全,高效的平台特性。ASP.Net是运行在服务器后端编译后的普通语言运行时代码,运行时早绑定(Early Binding),即时编译,本地优化,缓存服务,零安装配置,基于运行时代码受管与验证的安全机制等都为ASP.Net带来卓越的性能。 对XML,SOAP,WSDL等Internet标准的强健支持为ASP.Net在异构网络里提供了强大的扩展性。ASP.NET是微软力推的功能强大的编程环境,可以使用C#等多种高级语言及脚本语言、HTML、XML、XSL等来创建基于网络的应用程序。ASP.NET将C#作为一种面向对象语言,在很多方面来看,C#将成为微软的与Java相似的语言。 C#是ASP.NET开发中一个最重要的功能,微软会将C#发展成为Java的强劲对手。这也是微软.Net框架的一个重要组成部分。ASP.NET在面向对象性、数据库连接、大型站点应用等方面都优于ASP程序,ASP.NET还提供更多的其他方面的新特性,例如:内置的对象缓存和页面结果缓存;内置的XML支持,可用于XML数据集的简单处理;服务器控制提供了更充分的交互式制等。ASP.NET依然完全锁定在微软的操作系统中,要真正发挥ASP.NET潜力,你要使用C#或VB.net。这两种语言将成为ASP.NET标准的核心的脚本语言。2.4 C#编程语言微软宣布了它的最新编程语言C#是专门为.NET应用而开发出的语言,这从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致,这是一种面向对象的编程语言,它将作为Visual Studio中的一部分推出。C#(发音为“C-Sharp”)既保持了C+中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。据微软产品经理透露,C#语言将在保持C/C+灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。 C#是一种简洁且类型安全的面向对象语言,开发人员可以用其来构建在.NET Framework平台上运行的编程语言,用其可以创建在.NET Framework上运行的多种应用程序。使用C#可以创建传统的Windows客户端应用程序、XML Web service、分布式组件、客户端/服务器应用程序等。C#还包含使XML编程更为轻松的技术。微软将使它的下一代工具软件、操作系统和应用支持XML技术。 C#的一些突出的特点, 简洁的语法精心地面向对象设计与Web的紧密结合完整的安全性与错误处理版本处理技术灵活性与兼容性安全性。正是由于其灵活性,C#允许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问。C#遵守.NET公用语言规范(Common Language Specification, CLS),从而保证了C#组件与其它语言组件间的互操作性。元数据(Metadata)概念的引入既保证了兼容性,又实现了类型安全。2.5 开发平台Visual Studio 2005、IIS 5.1服务器、.NET Framework 2.0 图 2.1 VS2005开发工具界面2.6 通信协议HTTP协议(超文本传输协议)的主要特点可概括如下:(1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。(2)由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 (5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。另外,在实验中发现很多网络都设置了防火墙,考虑到安全问题,网络管理员会屏蔽很多端口。而对于HTTP最常用的80端口通常是开放的,这也是选择HTTP协议的一个重要因素。2.7 相关知识2.7.1 委派委派是C#引入的一种新的数据类型,它非常类似于C/C+中的函数指针,常常用于在编译时未绑定的动态方法调用。与函数指针不同的是委派在C中完全实现了面向对象,它既可以引用静态方法,也可以引用实例方法,而函数指针只能引用静态方法。C#中的委派同时也是类型安全的。 作为一种面向对象的数据类型,委派的使用分为三步:委派声明,委派实例化和委派调用。委派声明就是定义一个封装特定参数类型和返回值类型的方法体(静态方法或实例方法)的数据类型,看下面的示例: delegate int Compute (int left, int right); 可以看到,委派类型Compute包含了方法的两个要素: 参数类型和返回值类型。委派类型和方法只有满足下面两个条件,才能说它们是兼容的: 1 参数的数量相同,并且它们的类型也按顺序相同; 2 返回值相同。 委派类型相同指的是它们声明的类型为同一类型(名字一样)。而委派实例相等则是指它们绑定的方法为同一个方法,或相同的方法按相同的顺序组成的方法链,而它们本身的类型只要兼容即可(同样满足上面两个条件),不必强求同名。 委派实例化就是将委派类型绑定到特定方法的过程,和其他对象的实例化相似,都需要用new语句,只是必须接受和该委派类型兼容的方法名作为new语句的参数。如果是实例方法,必须采用两者中间加点号的方式同时提供实例对象和方法。 委派实例化后就可以像调用方法一样进行委派调用了。委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。2.7.2 事件事件是一种使对象或类能够提供通知的成员,类或对象可以通过事件为其他类或对象通知发生的相关事情,客户端则可以通过提供事件处理程序为相应的事件添加可执行代码。事件是对象发送的消息,已发信号通知操作的发生。而操作可能由用户交互(例如键盘或鼠标操作)引起的,也可能由某些系统行为或其他逻辑触发。发送或引发事件的对象称为“发行者”,接收事件并对其作出响应的对象称为“订阅者”。委派事件的基础,在事件通信中时间发行者并不知道哪个对象或方法将接收并处理由其引发的事件,委派就是事件发送发和接收方之间的纽带。事件处理程序本身都是方法成员,事件处理程序的唯一限制是其必须与事件所要求的委托签名匹配,也包括返回类型和参数。这个签名是事件定义的一部分,可以通过一个委托类型来指定。下面的示例声明了名为“EventName”的公共事件,其委托类型为EventNameEventHandler;Public event EventNameEventHandler EventName;示例: public delegate void ShowHandler(); /声明一个公共的委托类public event ShowHandler OnShow; /声明一个事件2.7.3 线程在Windows Task Manager 窗口中,还包含了进程使用的CPU的情况。这是因为进程也有一个由计算机的处理器使用的执行次序。这个执行次序就称为线程。每个进程至少有一个执行顺序或线程。线程的执行顺序是由应用程序的方法代码来决定的。跟准确地讲,线程其实是指向进程的指令流部分的一个指针。线程实际上不包括指令,只是指出了当前和将来可能要使用的路径,而这是通过数据和分支判断决定的指令来完成的。.NET Framework 支持自由线程,所以在所有的.NET语言中都可以使用自由线程。使用线程之前一定记住先添加引用using.System.Threading;示例: /从当前线程调用方法 SimpleThread st = new SimpleThread(); st.SimpleMethod(); /从其他线程调用方法 ThreadStart ts = new ThreadStart(st.SimpleMethod); Thread t = new Thread(ts); /Thread t = new Thread(new ThreadStart(st.SimpleMethod); t.Start();2.7.4 泛型泛型是2.0版C#语言和公共运行库(CLR)中新增加的一项新功能,使用泛型类型可以最大限度地重用代码、保护类型的安全和提高。使用泛型可以参数化代码,然后在使用的时候,填充具体的类型参数,该参数是泛型类型要操作的对象类型。常见的场景是使用泛型列表,如下所示:var letters = new List()letters.Add(“Alpha”);letters.Add(“Beta”);letters.Add(“Charlie”);foreach(var letter in letters) Console.Writeline(letter);在前面的代码中,letters 是泛型的字符串列表。注意这个尖括号,它指定字符串类型,new List()用来实例化letters.List的文档说明它是参数化类型,被定义为List ,这里的T是类型参数,它意味着你可以使用任何类型替换T,而且List可以操作这个类型。Dictionary类Dictionary类泛型类是表示键和值的集合(类型参数TKey和TValue分别表示键和值的类型)该集合称为“字典”,其中的每个添加项都由一个值及相关的键组成。Dictionary类泛型类提供了一组键到一组值的映射,由于该类作为一个哈希表来实现,因此通过键来检索值的速度非常快。2.7.5 装箱与拆箱1、装箱和拆箱是一个抽象的概念 2、装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = 0, obj); 这是一个装箱的过程,是将值类型转换为引用类型的过程 int val = 100; object obj = val; int num = (int) obj; Console.WriteLine (num: 0, num); 这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程 XX院本科毕业设计(论文) 5 系统实现3 需求分析3.1 应用需求分析如今计算机软件技术的发展已到了一个较高水平,许多传统行业和新兴行业如电子商务等的发展已离不开计算机软件技术的支撑,它们都在不同程度和不同形式的利用计算机实现各种的自动化、机器化,不再是人工手动管理。尤其是Internet的飞速发展,将整个世界联系在一起,信息广泛的在Internet上快速的传播,信息的变化日新月异,再不断的飞速膨胀,信息的变化对于企业的影响也越来越大,信息的收集已经不再是人工方式,决策的制定也变得越来越复杂,导致软件出来了大型的管理系统ERP,并影响着软件的发展,推动着软件技术的更新。信息时代,人们的工作生活依赖于众多软件,大多数软件处于软件测试和发布初期,升级的改动是非常频繁的。如果依靠传统的维护方式软件维护人员挨个去给每台机器上的软件做升级维护,在机子数量较少的情况下,一两个维护人员就可以应付,但如果客户端用户数量成百上千且比较分散,这种情况下采用传统的升级维护方式几乎是不可能完成的。针对这种情况,各个C/S模式的软件纷纷将自己的软件维护改为自动升级以适应现实的需求。自动更新的时候,客户端软件提交更新请求给固定的网址,然后网址返回最新版本的版本号。客户端软件和自己的版本号对比,如果发现服务器的版本和自己的版本不一样,那么就请求下载升级补丁。服务器响应请求,提供补丁下载;下载成功后,手动或自动安装一下就可以了。安装补丁的时候,客户端的主程序一般是要关闭的,除非采用动态卸载、调入组件的技术,比如网络游戏,就是尽量让玩家边玩游戏边更新。如果更新的是主程序,那么就必须关闭主程序了。可是主程序关闭了之后,谁来调用安装补丁呢?为了解决这个问题,人们把主程序和自动更新程序分开来做。当需要校验版本的时候,主程序调用自动更新程序。自动更新程序如果发现主程序需要更新,在下载了升级补丁之后,就会要求关闭主程序。主程序关闭之后,自动更新程序调用升级补丁进行安装,安装完成后再重新启动主程序。自动更新程序自动退出,完成更新任务。这和你关闭电脑后再插网卡的原理是一模一样的。其实生活中有很多现象可以借鉴到软件设计中。人们嫌这样的升级仍然太麻烦,后来出现了B/S结构,大家像抓住了救命稻草一样的追捧至今,希望能从这些劳动中解脱出来。B/S结构就是浏览器/服务器结构,它所有的功能,都是在浏览器里完成。程序升级的时候,只需要在服务端升级一下就可以了,浏览器再次访问服务器的时候,得到的就是新版本。你可以把它理解成一个纯粹的网站。是不是站长更新的时候,你打开网站就看到最新的页面?但是B/S结构有天生的弱点,因为它是基于网页浏览的,所以安全性是首要的难题,你能浏览的东西,原则上别人也能浏览。而且出于安全考虑,B/S访问本地资源,比如串口,必须借助于其他技术实现。B/S也不是万能的,必须考虑实际应用。Winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台的升级,面对这个实际问题,设计了一个通过软件实现自动升级技术方案,弥补了这一缺陷。3.2 系统功能需求即便拥有多年软件开发经验的团队也不会保证自己所做的软件是完美的,它或多或少会存在一些缺陷,甚至会存在诸多的漏洞。在软件的使用中,也会不断发现更多的问题,这些问题可能是软件本省的问题,也可能是运行的软硬环境变化造成的,而且用户也会对软件不断地提出新的要求。所以,软件的升级是不可避免的。对于用户而言,软件升级可以修补漏洞,确保数据安全;可以更新和增加新功能。对于软件开发上而言,为了满足市场需求,也需要不断地升级自己的软件,力求做得更好。对于用户和软件管理员,他们希望自己管理的软件具有自动更新功能,这样会减少更多的维护成本。为了满足这些要求,本课题试图寻求一种比较通用的自动升级平台。由于采用C/S结构,客户端经常需要更新,软件更新的实质上是在客户端和服务器之间进行通信和传递数据。程序更新时,自动升级的形式有:一是开机后自动隐藏运行,这种方式的技术成本较高,要求高可靠性和可用性;二是在启动程序时运行,一般设计为强制更新,这种方式要求升级速度要快;三是用户手动点击功能菜单运行,把升级文件放在共享文件夹中,由用户承担升级任务;最后是综合以上三种方式的两种或三种并存。3.2.1系统主要功能分析本应用系统自动升级实践课题是针对于C/S结构的Windows应用系统的开发。采用微软Microsoft Visual Studio IDE开发工具,使用.NET框架的C#语言进行实践课题的开发设计。本课题需要完成的课题实践内容,如下:1、 软件升级的实现原理2、 选择一种具体实现方式3、 软件升级系统模型设计4、 编码实现3.2.2自动升级原理图图3.1自动升级原理图4 系统设计4.1 系统设计思想要深入理解.NET客户端应用程序更新组件的工作原理,需要仔细研究一下实现客户端应用程序更新有那些必须要做的事情。第一步需要做的是检查是否有更新;当发现有更新时,开始第二步工作下载更新;当更新下载完成时,进行最后一步的工作实现更新。(一) 为更新做检查作为开发者,首先你得告诉应用程序到什么地方去做更新检查,就是所谓定位。其次,确定何时做更新检查。不可能用户每次一运行客户端程序,而它就在后台不停的进行更新检查,那多浪费资源!最后还有一项重要的事情需要解决,那就是如何进行更新检查。.NET应用程序更新组件使用HTTP进行通讯,这就允许客户端应用程序穿透防火墙来进行更新。并且进行更新检查所需要的地址就成了已知的Web服务器的一个URL地址,第一个问题顺利解决。.NET应用程序更新组件在组件生成的基础上产生一个线程,该线程负责进行更新检查。该线程在大多数时间处于休眠状态,但会在设置好的间隔苏醒并实现一次更新检查。应用程序为新的更新所做的检查的频率依赖于各应用自身。进行更新检查的间隔常用值的范围一般是从一个小时到几天。这种轮询的基本方法并不适合于所有情况。比如Microsoft Money只是在用户让它去进行更新检查时它才去检查。在这种情况下,更新轮询线程可被禁用。通过用命令调用更新组件的CheckForUpdate()方法来实现更新检查。关于如何进行更新检查的方法有这样几种:方法一:直接文件检查使用HTTP来比较服务器和客户端应用程序的最后的修改日期/时间戳是否一致。如果服务器上有更新的文件,客户端就知道可以更新自己了。对于Web浏览器来讲,也是同样的道理,它知道是否需要重新下载一个html页面或图片或是否可以重复使用先前已下载的。当应用程序有一个新的版本可用时,管理员简单地拷贝一个更新的版本来覆盖Web服务器上的旧版本。这种方法的问题在于更新不是自动进行,由此会出现潜在的失败可能。比如,如果管理员正在更新Web服务器上的应用程序版本,同时有个客户正在下载更新之前的版本,那么这个客户的计算机上就会既存在更新之前的一些文件,也存在更新之后新版本的一些文件。基于上述原因,对于重要的应用程序不提倡使用直接文件检查来更新。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!