Периодически обновляйте страницу ASP.NET для отображения данных в реальном времени с SQL Server. - PullRequest
1 голос
/ 15 сентября 2009

У меня есть приложение на основе корзины для покупок в asp.net 2.0, которое использует концепцию групповой покупки. Моё требование состоит в том, чтобы, когда пользователь проверял определенный товар, он делал это с самой последней ценой этого товара в то время.

Теперь есть сценарий.

У меня есть продукт с ценой 50. Я сделал оформление заказа. 50 отображается в моей корзине. В то же время какой-то другой пользователь получает доступ к продукту и теперь, основываясь на некоторой бизнес-логике, мы рассчитываем цену. Второй пользователь сделал некоторую активность, которая снизила цену до 45. У меня есть триггер, который обновляет все элементы корзины с этой новой ценой.

Я хочу показать эту обновленную цену на интерфейсе первого пользователя без обратной передачи. или я хочу сообщить ему, что эта цена изменилась, поэтому обновите страницу.

У меня есть следующие варианты.

1) Элемент управления повторителем, который показывает корзину, должен быть помещен под панель обновлений, и эта панель обновлений должна обновляться через некоторый интервал с использованием таймера.

2) использовать службы уведомлений SQL Server и сделать кеш недействительным, как только данные изменятся в базе данных.

Я не хочу использовать службы уведомлений, поскольку я не кеширую данные. Во-вторых, проблема с панелью обновлений и управлением таймером в том, что для ее обновления будет непросто, а время обновления трудно найти.

Пожалуйста, скажите мне, как выполнить этот сценарий.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2009

Я бы сгенерировал JavaScript, который обновляет все элементы Repeater (html-поля с ценами) и имеет setTimeout () для периодической проверки веб-службы (wcf, asmx или ashx), если цена изменилась.Если это так, то я бы получил все цены и обновил поля HTML!Пользователю не нужно ничего делать, вы можете показать ему, что цена изменилась.
С помощью jQuery и JSON для сериализации объектов это может быть легко достигнуто.

0 голосов
/ 15 сентября 2009

Обычно это делается через 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».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...