日期:2011-06-26 浏览次数:20487 次
前言:
由于项目原因,要实施的客户离作者(itbaby)太远,考虑提供软件的在线升级功能.我们如何实现呢!先讲下思路.
思路:
先实现WEB端的开发,主要考虑使用WEBService技术,提供远程服务的调用函数,返回一个文件的字节内容,然后写一个升级程序客户端,分发给客户使用的机器中,(可以随客户的软件一起安装).该客户端程序主要连接webserivce,然后将文件保存到本地机(客户的机器)中.就可以实现!
实现的细节:
要考虑提供给客户软件版本问题,低版本的升级,最新版本的就不用升级.还要考虑用户名与密码在WEB端的认证!
使用技术:
ASP.Net WebService开发,客户端的异步调用WebService方法.数据库技术!
如果转载请说明出处,http://blog.csdn.net/zerodj
作者主页:http://itbaby.jss.cn
注意:itbaby.jss.cn中,技术文章不再更新,全部转到blog.csdn.net/zerodj中.
开始实现:
1.建立数据库,作者(itbaby)使用SQLSERVER2000
1)软件项目表:softlist(softid, softname, resume, loginname, loginpwd)
softid:编号
softname:软件名称
resume:介绍
loginname:客户登录名
loginpwd:密码
2)各个软件的版本表 SoftListVersion(softid, subid, version, UpdatePath, olefile)
softid:主表的软件编号
subid:各版本数据编号
version:软件版本
filename:升级文件名
olefile:升级文件的二进制内容,是image类型,(我主要存放MSI的安装包文件类型,可以使用C#做此类安装包文件)
3)建立一个视图,chkVersion,用于检查版本号
SELECT dbo.SoftListVersion.subid, dbo.softlist.softname, dbo.SoftListVersion.version
FROM dbo.softlist INNER JOIN
dbo.SoftListVersion ON dbo.softlist.softid = dbo.SoftListVersion.softid
4)再建立一个视图,vOleFile,用于下载文件
SELECT dbo.SoftListVersion.subid, dbo.softlist.softname, dbo.SoftListVersion.filename,
dbo.SoftListVersion.olefile, dbo.SoftListVersion.version
FROM dbo.softlist INNER JOIN
dbo.SoftListVersion ON dbo.softlist.softid = dbo.SoftListVersion.softid
2.写一个WEBSERVICE
1)启动VS.Net2003,建立一个叫babyWebSvc的项目,项目类型为(ASP.Net WEB服务)
2)添加一个SoftUpdate.asmx的WEB服务
3)添加一个方法SearchVersion
[WebMethod(Description="返回当前软件升级包的最高版本")]
public string SearchVersion(string softname)
{
string sVersion = "";
webmod.dbConnStart(); //(连接)作者自己的连接数据库类,用户自己完成数据库连接
string strSQL = "select MAX(version) as MaxVerID from chkVersion where softname = @softname";
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.CommandTimeout = 0;
sqlCmd.Parameters.Add("@softname",SqlDbType.VarChar).Value = softname;
SqlDataReader sqlRd = sqlCmd.ExecuteReader();
if(sqlRd.HasRows)
{
sqlRd.Read();
sVersion = Convert.ToString(sqlRd["MaxVerID"]);
}
sqlRd.Close();
webmod.dbConnEnd(); //(断开连接)作者自己的连接数据库类,用户自己完成数据库连接
return sVersion;
}
4)添加下载文件内容的方法DownloadSoft
[WebMethod(Description="返回需要下载的文件字节")]
public byte[] DownloadSoft(string UserName,string PassWord,string SoftDnldName,string SoftHeightVersion)
{
//(连接)作者自己的连接数据库类,用户自己完成数据库连接
webmod.dbConnStart();
//检查用户合法性
bool bMember = CheckAuth(UserName,PassWord);//该WebService内的一个检查用户合法性的函数,用户可以自己完成
if(!bMember)
{
webmod.dbConnEnd();
return null;
}
byte[] b = null;
//我们取出指定软件名称的最高版本的升级包
string strSQL = "select olefile from vOleFile where (filename=@softname) and version=@ver";
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.CommandTimeout = 0;
sqlCmd.Parameters.Add("@softname",SqlDbType.VarChar).Value = SoftDnldName;
sqlCmd.Parameters.Add("@ver", SqlDb