|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)一.择要
前两天在博客上公布了一篇英文的主动更新组件文章ReleaseaAutoUpdatertool,那末在这篇文章中,我们也对其功效举行一些复杂申明,这个组件十分复杂,以是人人能够下载举行一些改善。尽人皆知,关于一样平常的软件开辟,在入手下手的时分城市有一个手艺选型的阶段,最年夜的选型就是起首要断定是选择Client/Server形式仍是Browser/Server形式。综合而论:二者各有好坏,在良多方面都不克不及被对方相互代替,如在合用Internet、保护事情量等方面,B/S比C/S要强良多;但在运转速率、数据平安、人机交互等方面,B/S就远不如C/S那末壮大。以是综上所述,但凡C/S的刚强,即是B/S的弱项,反之亦然。因为明天会商的是主动更新组件,以是接上去我们就往这方面细讲,既然C/S形式在运转速率、数据平安、人机交互有这么多的长处,特别是客户端手艺日趋开展的明天,怎样办理客户真个部署与主动晋级成绩即是一个十分主要的成绩。
二.本文大纲
・1.择要
・2.本文大纲
・3.为何不利用ClickOnce
・4.扼要先容
・5.项目中怎样利用
・6.详细效果
・7.保护与下载
・8.总结
三.为何不利用ClickOnce
在后面的择要中我们复杂先容了主动更新功效的主要性,在这一大节里我们来谈一下为何不利用微软给我们供应的主动更新组件ClickOnce,人人都晓得ClickOnce给我们供应了良多功效:复杂说来,ClickOnce使用程序就是任何利用ClickOnce手艺公布的Windows窗体或把持台使用程序。能够接纳三种分歧的办法公布ClickOnce使用程序:从网页公布、从收集文件共享公布或是从媒体(如CD-ROM)公布。ClickOnce使用程序既能够安装在终极用户的盘算机上并在当地运转(即便当盘算机脱机时也能够运转),也能够仅以联机形式运转,而不在终极用户的盘算机上永世安装任何内容。ClickOnce使用程序能够自行更新;这些使用程序能够在较新版本变成可用时反省较新版本,并主动交换一切更新的文件。开辟职员能够指定更新举动;收集办理员也能够把持更新战略,如将更新标志为强迫性的。终极用户或办理员还能够对更新举行回滚,使使用程序恢复到初期的版本。
从下面人人能够看出ClickOnce无疑是微软对Client/Server形式部署的最好办理计划,但恰是由于它的功效出格壮大并且又要利用相称复杂,以是在产物的封装上就出格严实,基础上就表露了一些复杂的操纵接口,如许就有形把一些定制化的操纵拒之于门外,好比:
1,用户不克不及本人指定安装路径。
2,对主动更新流程不克不及做定制化的操纵。
3,对主动更新的UI不克不及定制化的计划。
正由于这几个缘故原由,以是良多企业城市做一些定制化的组件来完成主动更新的功效,基于此,我们这里也完成了一个十分复杂的主动更新组件.
四.扼要先容
实在主动更新的道理很复杂,剖析起来不过就是复杂的几步操纵,固然完成体例也是迥然不同,这里我们就选一种较复杂的体例:
1.启动主程序,主程序内里挪用晋级程序,晋级程序毗连到IIS大概FTP。
2.晋级程序猎取服务器端XML设置文件中新版本程序的更新日期或版本号或文件巨细。
3.晋级程序猎取原有客户端使用程序的比来一次更新日期或版本号或文件巨细,然后二者举行对照;假如新版今天期>原有程序的最新日期,则提醒用户是不是晋级;或假如新版本版本号>原有程序的版本号,则提醒用户是不是晋级;再或假如新版本文件巨细>原有程序的文件巨细,则提醒用户是不是晋级。本文次要接纳一样平常的做法,就是经由过程版本号来举行对照。
4.假如用户选择晋级,则猎取下载文件列表;
5.在当地创建与远程IIS大概FTP响应的一时目次,然后下载到这个一时目次文件下;
6.删除旧的主程序,拷贝一时文件夹中的文件到响应的地位;
8.停止晋级流程偏重新启动主程序。
依据后面的流程,我们能够复杂计划以下的项目:
详细类先容:
IAutoUpdater.cs供应内部挪用的接口
AutoUpdater.cs该组件的主操纵类
Autoupdater.config当地设置文件
DownloadConfirm.cs提醒是不是有更新页面
DownloadProgress.cs下载进度页面
CommonUnitity.cs一些经常使用功效
Config.cs当更新终了以后必要更新Config,以是这里必要一个供应序列化的Config类
ConstFile.cs一些常量文件
DownloadFileInfo.cs必要下载的文件实体类
LocalFile.cs当地文件实体类
RemoteFile.cs远程文件实体类
UpdateFileList.cs当地的实体类汇合
代码十分复杂,详细能够下载举行检察,以是这里就不做过量论述。
五.项目中怎样利用
第一步:Host更新的版本到服务器
假如必要让客户端猎取最新的版本,起首我们必要开辟职员编译源代码并天生文件,然后拷贝到FTP大概IIS目次下,运转一个主动天生XML文件的程序,把一切的文件都主动天生到一个XML文件,具体见下图:[code][/code]第二步:设置当地的Config
经由第一步的流程,这一步要做的就是设置当地的Config用于监测并下载远程IIS大概FTP下必要更新的文件,详细以下图所示:
第三步:修正主程序
起首把AutoUpdater这个DLL引进我们的主项目,然后在主项目中增加以下代码,固然你能够依据本人的必要举行誊写,这个DLL供应了两个内部接口,一个接口用于判别是不是有更新及下载,另外一个接口则是用于更新堕落时举行回滚操纵,详细代码以下:
复制代码代码以下:
#regioncheckanddownloadnewversionprogram
boolbHasError=false;
IAutoUpdaterautoUpdater=newAutoUpdater();
try
{
autoUpdater.Update();
}
catch(WebExceptionexp)
{
MessageBox.Show("Cannotfindthespecifiedresource");
bHasError=true;
}
catch(XmlExceptionexp)
{
bHasError=true;
MessageBox.Show("Downloadtheupgradefileerror");
}
catch(NotSupportedExceptionexp)
{
bHasError=true;
MessageBox.Show("Upgradeaddressconfigurationerror");
}
catch(ArgumentExceptionexp)
{
bHasError=true;
MessageBox.Show("Downloadtheupgradefileerror");
}
catch(Exceptionexp)
{
bHasError=true;
MessageBox.Show("Anerroroccurredduringtheupgradeprocess");
}
finally
{
if(bHasError==true)
{
try
{
autoUpdater.RollBack();
}
catch(Exception)
{
//Logthemessagetoyourfileordatabase
}
}
}
#endregion利用就是这么复杂,更具体的操纵,人人能够下载源码,也正由于它的复杂,以是人人能够对其修正以满意详细项目标需求。
六.详细效果
当我们运转主程序(WinForm大概WPF),假如服务器上有最新的版本,就会弹出以下页面举行提醒并让用户选择是不是更新。
当用户不必要更新时,能够选择Skip按钮跳过并持续主程序流程,反之则进进以下页面。
鄙人载的过程当中,用户能够选择Cancel中断下载偏重新回到支流程。
七.保护与下载
该组件已托管到CodePlex,以是人人能够到下面下载其源代码,详细地点:http://autoupdater.codeplex.com/
八.总结
我们这篇文章复杂的解说了一个复杂的主动更新组件,因为它对照复杂并且功效单一,以是没有消费大批的篇幅举行叙述,感乐趣的读者能够下载其源码。前面我会把本人开辟的一套MVVM框架也托管上往,因为今朝对Silverlight的撑持还不太好,以是正在延续做相干的改善,个中自创了一些其他优异框架的头脑而且融进了一些实践使用场景,以是到时也但愿人人可以多多指教!
圣殿骑士
出处:http://www.ckuyun.com/KnightsWarrior/
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。 |
|