定期刷新ASP.NET页面以显示来自SQL Server的实时数据

时间:2009-09-15 07:19:29

标签: asp.net sql-server

我在asp.net 2.0中有一个基于购物车的应用程序,它使用团购的概念。我的要求是当用户签出特定产品时,他应该使用当时该项目的最新价格。

现在有一个场景。

我有一个价格为50的产品。我在我的购物车中显示了checkout.50。同时其他一些用户正在访问该产品,现在基于一些业务逻辑,我们计算价格。第二个用户做了一些将价格降低到45的活动。我有一个触发器,用这个新价格更新所有购物车项目。

我想在没有回发的情况下在第一个用户的前端显示此更新价格。或者我想给他一个消息,这个价格已经改变,所以做一个页面刷新。

我有以下选择。

1)显示购物车的转发器控件应放在更新面板下,并且应使用定时器在一段时间后刷新更新面板。

2)一旦数据库中的数据发生变化,就使用SQL Server通知服务并使缓存无效。

我不想使用通知服务,因为我没有缓存数据。更新面板和计时器控制的第二个问题是,刷新它和刷新时间的开销很难找到。

请告诉我一种完成此方案的方法。

2 个答案:

答案 0 :(得分:0)

这通常是通过客户端(浏览器)方面的ajax来完成的。也许这种方法也适用于您的要求?

使用ExtJs core,您可以按如下方式进行ajax调用:

Ext.Ajax.request({
   url: 'ajax_demo/sample.aspx',
   params : {'requestType':'check-sql-prices'}
   success: function(response, opts) {
      var obj = Ext.decode(response.responseText);
      // process the response JSON object.
   },
   failure: function(response, opts) {
      // this writes the the firebug console.
      console.log('server-side failure with status code ' + response.status);
   }
});

Ext Core还可以处理“定时代码执行”,因此您可以每隔30秒运行一次检查。往返时间通常小于100毫秒,但这肯定取决于您的“SQL价格检查”逻辑。

答案 1 :(得分:0)

如果价格发生变化,我会生成更新所有Repeater项目(带价格的html字段)的JavaScript,并且setTimeout()用于定期检查Web服务(wcf,asmx或ashx)。如果有,那么我会检索所有价格并更新HTML字段!用户不需要预先设置任何东西,你可以告诉他一些价格变化的通知 使用jQuery和JSON进行对象序列化可以很容易地完成。