如何将更新推送到非HTML5浏览器?

时间:2011-05-10 21:13:43

标签: asp.net .net-4.0

我们正在考虑使用Web应用程序为用户提供系统数据的频繁更新。最初,数据将仅限于系统压力,流量等,但该概念可适用于我们业务的许多领域。数据存储在SQL Server中。

问题是,当新数据插入数据库时​​,我们如何强制网页上的表更新。例如,泵报告新的流量值。可以限制对数据库的更新,但实际上,为了我们的目的,我们每隔一两分钟就会看一次新的更新。

这似乎是使用推送通知的情况,但我们可以在ASP.NET中使用什么? HTML5是不可能的,虽然我们已经看过一些带有网络套接字的推送演示。

  1. 我们可以使用推送技术用于ASP.NET吗?
  2. 如果没有,或者它是一个更好的解决方案,我们应该用jQuery / AJAX轮询数据库吗?我们应该看一下样品的建议吗?

4 个答案:

答案 0 :(得分:1)

使用HTTP,您只能向客户端查询发送响应,因此无法在不使用Web套接字的情况下推送内容 最常见的解决方案是

  • 轮询服务器以进行更改并更新表(如果有)
  • 经常更新客户端上的页面,如果有新数据,让服务器生成页面。

后一种方法最接近推送内容,因为客户端不检索数据,但如果您想操纵数据客户端,最好只检索数据。
后者的一个好处是服务器处理数据并将其转换为普通文件,服务器可以轻松地为许多客户端提供服务,而不是每次打开时都创建页面。

答案 1 :(得分:0)

Comet”是您正在寻找的技术。这基本上是人们提出的一些技巧来做你要求的那种事情。这些技术中最简单的方法是让浏览器向服务器发出持续请求,以获取它应该知道的任何更新。最通用(但复杂)的技术涉及巧妙地使用引用动态脚本资源的嵌入式<script>标记。

答案 2 :(得分:0)

您可以使用与Timer结合的ASP.NET UpdatePanel控件定期检查新数据,然后刷新UpdatePanel

答案 3 :(得分:0)

通过ajax轮询是最好的解决方案。

由于您使用的是ASP.NET,因此一些内置的ajax控件可以使这非常简单:

http://ajax.net-tutorials.com/controls/timer-control/

如果您想更好地完成这项工作,可以考虑创建一个Web服务并使用原始JavaScript或JQuery框架来处理ajax请求/更新。我这样说是因为ASP.NET ajax将完整的页面视图状态发送回服务器,这是低效的,通常是不必要的。