您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 网站日常远程管理系统设计与实现
网站日常远程管理系统设计与实现摘要介绍了一种基于.NET的网站远程更新、远程备份和远程恢复的系统。用户可以根据网站的特点和自身的需要,通过制定备份计划、选择备份内容和备份储存方式,实现网站远程管理。实践表明,该系统管理方式方便、快捷,具有很强的灵活性和可扩展性,极大地减少了网站维护成本。关键词网站管理;远程管理;更新;备份;恢复;Web服务1简述网站是人们获取信息的常用渠道,网站的建设是一个动态的过程,几乎时时都在更新变化,网站的日常管理变得越来越重要,同时也越来越复杂。网站的日常管理主要包括网站维护、网站更新、网站备份和网站恢复等系列围绕网站运行的一系列基本管理活动。由于软件、硬件、病毒等众多原因,网站面临数据丢失,文件破坏等导致网站无法正常运行的情况时有发生。为了最大限度维护网站信息的安全性和完整性,对网站实施备份、恢复等措施是十分必要的。本文针对网站日常管理的特点,设计了一种基于WebServices的网站远程更新、远程备份和远程恢复管理系统,系统采用基于C/S和B/S的混合架构。该系统通过客户端或B/S方式实现网站的远程异地更新,通过WebServices实现系统自动或远程手动、实时备份,备份的文件和数据库以压缩的方式存储,并自动上传到异地备份服务器。当紧急情况出现时,用户可远程恢复网站。该系统的实现,极大地方便了网站的日常管理,可实现远程异地实时管理和维护。2系统设计原理和功能目前比较流行的网站建设都是以Windows系列为操作系统,采用SQLServer或Oracle等为数据库管理软件,Web服务器采用IIS系列。现在的网站大多采用动态网页技术和数据库相结合的模式。本系统的备份对象就是运行在此环境服务器上的网站和数据库。此系统是基于.NET开发的,主要分两部分,一部分是基于C/S架构的服务器管理端,另一部分是基于B/S架构的网站和Web服务。由于网站一般集中放置在网络中心统一管理,身处异地,实际服务器网站管理者不一定是网络中心工作人员,因此需要网站管理人员进行日常异地管理和维护,因此本系统设计基于异地远程管理。系统架构如图1所示。图1系统架构2.1网站远程更新随着业务的变化,网站在部署使用期间需求可能经常变更,从而导致网站程序修改,或者网站静态网页文件变更,需要进行异地远程更新。首先服务器端管理程序实时监控网站管理系统上传的网站更新数据包,当监测到数据包上传完后,将数据包解压缩,然后根据压缩包中的协议更新网站或数据库,其远程更新流程如图2所示。图2网站远程更新流程图2.2网站远程备份本系统网站备份主要包括网站程序文档备份和数据库备份两部分。网站程序文档备份主要分为完全备份和差异备份,数据库备份采用完全备份。系统提供了手动备份和自动备份功能。自动备份提供了每天备份、隔天备份、每周备份、每月备份和自定义时间间隔备份等五种备份计划。其远程备份流程如下图3所示。图3网站远程备份流程图2.3网站远程恢复本系统网站远程恢复是指从备份服务器下载备份文件(主要包括网站程序文档备份和数据库备份两部分),然后恢复网站和数据库。网站程序文档恢复主要分为完全恢复和差异恢复,数据库恢复则采用完全恢复。恢复时必须遵循数据库备份和网站文档备份一致性原则,否则会因网站和数据库版本不一致而造成系统瘫痪。其远程更新流程如图4所示。3关键技术或实现难点系统采用B/S和C/S混合架构,管理网站主要采用ASP.NET编写,服务器管理端采用C#语言开发。在整个系统设计和实现过程中有几个关键技术对系统的实现能否成功尤为关键,主要包括以下几部分。3.1数据压缩和解压缩技术为了减少备份文件占用磁盘空间和异地上传时减少网络流量,本系统对数据库备份文件和网站备份(全站备份和差异备份)文件均采用压缩方式保存。本文压缩采用C#开发,最后形成了一个能将所有文件压缩到固定格式的压缩文件,此函数在B/S和C/S架构下均可调用,其压缩调用函数如下所示。图4网站远程恢复流程图///summary///将各种文件压缩到预定的压缩文件中////summary///paramname=dt_FilesToZip需要压缩的文件列表及其对应文件,第一列:需要压缩的文件列表,如“C:\1.TXT”;第二列:对应到压缩文件文件里的文件名,如“1.TXT”;第三列:对应到压缩文件文件里的文件夹,如“目录”,这样该文件在压缩文件夹的名字是“目录\1.TXT”/param///paramname=ZipedFile压缩文件/parampublicvoidZipFiles(DataTabledt_FilesToZip,stringZipedFile){Crc32crc=newCrc32();ZipOutputStreams;if(!File.Exists(ZipedFile))s=newZipOutputStream(File.Create(ZipedFile));elses=newZipOutputStream(File.Open(ZipedFile,FileMode.OpenOrCreate));s.SetLevel(6);foreach(DataRowdrindt_FilesToZip.Rows){//打开压缩文件FileStreamfs=File.OpenRead(dr[SourceFile].ToString());byte[]buffer=newbyte[fs.Length];fs.Read(buffer,0,buffer.Length);ZipEntryentry=newZipEntry(Path.Combine(dr[Path].ToString(),dr[DestiFile].ToString()));entry.DateTime=DateTime.Now;entry.Size=fs.Length;fs.Close();crc.Reset();crc.Update(buffer);entry.Crc=crc.Value;s.PutNextEntry(entry);s.Write(buffer,0,buffer.Length);}s.Finish();s.Close();}如上所示,系统将需要压缩的文件信息全部放入到数据内存表DataTable之中,压缩时,采用多线程后台压缩,采用这种方法,保证了系统在实时监控的同时实现了数据的压缩、上传。同时,系统开发了与之配套的解压缩技术,其压缩调用函数如下所示:publicvoidUnZip(string[]args){ZipInputStreams=newZipInputStream(File.OpenRead(args[0]));ZipEntrytheEntry;stringPath_mudi=args[1];while((theEntry=s.GetNextEntry())!=null){//获取压缩文件夹stringPathName=Path.GetDirectoryName(theEntry.Name);stringfileName=Path.GetFileName(theEntry.Name);//获取压缩文件//生成解压目录Directory.CreateDirectory(Path.Combine(Path_mudi,PathName));if((fileName!=String.Empty)||(fileName!=String.Empty)){//解压文件到指定的目录stringfilename=Path.Combine(Path_mudi,theEntry.Name.Replace(/,@\));FileStreamstreamWriter=File.Create(filename);intsize=2048;byte[]data=newbyte[2048];while(true){size=s.Read(data,0,data.Length);if(size0)streamWriter.Write(data,0,size);elsebreak;}streamWriter.Close();}}s.Close();}3.2基于WebServices的大文件异地上传技术在本系统中,随着网站的持续运营,文档和数据将越来越大,在实现数据异地备份时,需要对大量的压缩后的大文件进行上传和下载。同时,这种上传和下载不仅仅是基于B/S模式,也基于C/S模式,如何开发兼容这两种模式能使用的大文件上传是非常重要的技术环节。这种设计要求是:可上传大于1G的文件。完全基于.NET开发,无需任何客户端配置。提供同步的上传进度实时显示。不破坏页面逻辑,不受请求的超时设置影响,可配置服务器处理时间。因此,为了满足上述要求,该系统在实现这些基本功能时,采用基于WebServices技术,开发了大文件上传组件,通过该组件解决了整个系统中基于B/S和C/S模式的大文件上传,为整个系统的大文件传输提供了可靠的保障。3.3网站差异备份监测技术本系统支持网站的差异备份,所谓差异备份就是对自上一次备份后网站的变化文档进行备份。因此如何监测网站文档实时变化成为了差异备份的核心。本系统在服务器端开发了WINFORM的监测模块,采用了系统自带的FileSystemWatcher组件进行监控网站变化,主要监测文档的创建、变化、重命名三种状态,也就是说,网站差异备份时,只备份网站中程序及文档的新建、修改和重命名部分,并将这三部分内容合并打包压缩并上传到异地备份服务器。3.4网站备份与数据库备份版本一致性问题由于网站采用的是动态语言开发,动态数据均存放在数据库中,因此网站程序的版本和数据库版本一致性显得十分必要,否则由于二者涉及数据库任何一方的改动不匹配将导致网站运行错误甚至导致网站瘫痪等灾难性后果。因此控制网站备份和数据库备份的版本一致性问题成为极为重要的解决方案。在本系统中,当系统进行备份时,系统创建一个瞬时GUID,并存入到文件名为“VersionConfig.XML”的XML文件中,此文档信息如下所示:VersionConfigVersionGUID0029A5AD-2D7S-4FB6-B139-3235E42F6424/VersionGUIDBackupDateTime2010-09-1213:45:31/BackupDateTimeBackupMode完全备份/BackupModeSubscribeInfo网站最终运行版本/SubscribeInfo/VersionConfig当网站和数据库分别备份时,各产生一个文件名为“VersionConfig.XML”的XML文件,并将此文件与备份的网站备份和数据库备份文件一并压缩。这样,当在恢复时,系统将会分别提取网站备份和数据库备份的压缩文件中“VersionConfig.XML”文件的VersionGUID信息进行版本比较。世界上任何两台计算机都不会生成重复的GUID值,主要用于在分配必须具有惟一性的标识符。也就是说本系统版本比较的主要依据是系统自动产生的GUID信息,此GUID号在网站备份压缩文件和数据库备份压缩文件中均一致,从而在恢复系统时,可以从两个不同的压缩文件中判断备份版本是否一致,保证了恢复网站系统时程序与数据的一致性,从而避免了错误或灾难发生。4总结本系统在多个运行的网站系统进行了测试,系统运行稳定,可靠,能按照预定的日常管理计划进行自动备份,同时可通过远程实施网站更新和远程系统恢复,实现了网站异地管理。另外,系统稍加改造或替换相应模块即可实现对其它数据库的备份或恢复操作,从而使本系统具有更强的扩展性和适应性。
本文标题:网站日常远程管理系统设计与实现
链接地址:https://www.777doc.com/doc-2141832 .html