原来用过socket实现过,通过共享文件夹的方式来实现拷贝的。感觉这个方法可靠性不高。想让大虾们教教我webservice 如何来通信 或者 wcf也行 最好俩个都有。在网上看到的只有客户端请求的程序,想知道怎么弄自己的服务端,有自己的服务器,不知道怎么弄。求教。
c#
webservice
wcf
socket
服务器
------解决方案--------------------
1. 直接挂一个http网站,然后更新文件都在上面,有xml啥的记录版本;
2. 给程序加一个shell,shell是不变的,所以你现在看到qq啥的都是platform,每次先启动shell访问网站,看看有没有新版本,有的话就更新本地文件;
3. http方便一些,web service的没有弄过,可以试试。
------解决方案--------------------
比较服务器文件和本地文具hash码,如果不一样,则下载下来覆盖本地的
如果当前程序正在运行,需要提示用户退出主程序才能更新
给你一个下载文件类(你根据需要下载的文件列表做成多线程)
using System;
using System.Net;
namespace AutoUpdate
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class clsDownLoad2
{
public clsDownLoad2()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public bool DownLoad(string strRemoteFile, string strLocalFile)
{
WebClient wc = null;
try
{
wc = new WebClient();
wc.DownloadFile(strRemoteFile, strLocalFile);
}
catch
{
return false;
}
finally
{
if(wc!=null)
{
wc.Dispose();
wc = null;
}
}
return true;
}
}
}
------解决方案--------------------
服务端不用写代码啊,你看QQ升级,就一个升级客户端,它最多去服务端验证一下,剩下的都是客户端处理下载
------解决方案--------------------
服务端所有文件列表哈希码你可以先生成成一个文本文件,客户端先下载这个文本文件,然后挨个跟本地文件哈希码比较,不一致的就下载
------解决方案--------------------
客户端必须能访问到服务端上最新的文件列表,肯定有url
------解决方案--------------------
服务器端就是一个http网站,里面都是文件,通过http协议访问而已。
------解决方案--------------------
用ClickOnce发布即可,MSDN有详细说明
------解决方案--------------------
支持用Shell这种方法
shell做得越简单越好,因为它是不变的.