我在asp.net 2.0中有一个基于购物车的应用程序,它使用团购的概念。我的要求是当用户签出特定产品时,他应该使用当时该项目的最新价格。
现在有一个场景。
我有一个价格为50的产品。我在我的购物车中显示了checkout.50。同时其他一些用户正在访问该产品,现在基于一些业务逻辑,我们计算价格。第二个用户做了一些将价格降低到45的活动。我有一个触发器,用这个新价格更新所有购物车项目。
我想在没有回发的情况下在第一个用户的前端显示此更新价格。或者我想给他一个消息,这个价格已经改变,所以做一个页面刷新。
我有以下选择。
1)显示购物车的转发器控件应放在更新面板下,并且应使用定时器在一段时间后刷新更新面板。
2)一旦数据库中的数据发生变化,就使用SQL Server通知服务并使缓存无效。
我不想使用通知服务,因为我没有缓存数据。更新面板和计时器控制的第二个问题是,刷新它和刷新时间的开销很难找到。
请告诉我一种完成此方案的方法。
答案 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进行对象序列化可以很容易地完成。