当前位置:编程学习 > C#/ASP.NET >>

远程更新服务器,如何将客户端的更新请求合理分布到不同时间段完成?

c#的客户端远程自动更新功能一般采用webservice即可完成,实现起来不难。但是,远程更新服务器有一个特点:在没有新版本发布的时候,基本无流量、无负载;一旦发布新版本,客户端会在比较集中的时间内连接服务器,并下载文件进行版本的更新,造成服务器出现突发流量、负载加剧。这对服务器的资源利用非常不合理,能不能由服务器对客户端的升级请求进行分组排队,在同一时间只允许限定数量的客户端进行更新,完成后再依次进行其它组客户端的更新?但是感觉没有比较方便的技术手段来实现,请大家多帮助。 --------------------编程问答-------------------- 很简单的
在服务端加一个队列
来一个客户端就入队列,并且允许更新
当队列达到一定量,就不能再入队,也就是不允许更新

客户端每2分访问服务端检查是否有更新
这次2分钟不需要更新
可能下次的2分钟就需要更新了
这样就能达到分批分流的作用了


--------------------编程问答-------------------- 是个好思路,但是有个问题:如果用webservice的话,服务端能控制客户端不下载文件吗?
--------------------编程问答--------------------
引用 2 楼  的回复:
是个好思路,但是有个问题:如果用webservice的话,服务端能控制客户端不下载文件吗?


肯定可以控制啊
你在webservice增加一个方法CheckUpdate(Int32 ver);
如果现在A客户端来请求CheckUpdate
如果需要升级,并且队列没满,就给他返回URL
如果队列已满,就不给他URL
等待下次的2分钟

现在的问题是什么时候删除或者清空这个队列



--------------------编程问答--------------------
引用 3 楼  的回复:
现在的问题是什么时候删除或者清空这个队列


这个需要客户端告知服务端已经正常更新了吧,但是我的客户端在连接服务端的时候,并没有一个唯一标识。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,