欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

浅入浅出 Server Push

创建时间:2011年06月12日 23:38  阅读次数:(5983)
分享到:

推送技术Server Push的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。

最近在做一个即时显示的面板页面。
需求:
1.即时显示;
2.无刷新。

做Web的话,一听到无刷新,马上想到的就会是Ajax,我第一版的实现方法是Ajax的Updatepanel+Timer控件,定时向服务器发出Request。实现是没有问题,但是对于资源的消耗非常恐怖,可以这么说。打开进程管理器,可以看到数据库和浏览器(因为是在本机上做)的CPU占用比较高,并且浏览器的内存占用一直在上升。。。囧——不用再多解释了,你懂的。。。

到处找资料,从Fighting Team.SDF那里,了解到了Server Push——服务器推送技术。看了一两个不怎么完整的Demo后,开始实施。来,直接贴代码:

这里要引入Threading的类库:
using System.Threading;
///后台程序段:
/// <summary>
/// 以发送服务端控制信息的方式提供HtmlTextWriter对象
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
while (Response.IsClientConnected)
{
Response.Write("<script>Display('" + SQLHelper.select().ToString() + "')\n </script> ");
Response.Flush();
Thread.Sleep(41);
}

可以看到,其实代码非常简单,就是重写了Rander方法。方法里,做一个死循环,将后台数据库里的数据,不停地Response到前台,展示给用户。就实现了这么一个推送的动作。

总结一下:这个方法因为只有一个推送,比之前用Timer定时发送Request,再接受Response的方法优化许多,不仅减少了服务器的开销,也降低了数据库的负荷。再打开进程管理器看一下,CPU和内存的占用都比较低。不过可以相对性既然存在,那么说明这个方法也有不利的一方面:ClientConnected意思是,客户端连入,就是说客户端没有断开与服务端的连接。我们知道服务器的连入数是有限制的,如果一直保持连接状态不断开连接的话,那么连入数一多,这个资源的消耗又是很可怕的。所以权衡完Server Push技术,比较适合用在连入数少的场合,比如像信息显示面板之类的,连入数都不较少,比较单一,则不会占用太多的资源。

'Y禰籗▼00
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 5+29=? 的结果(结果是:34)
结  果: