ASP.NET Лучший способ поставить в очередь отчет в sql, а затем обновить пользователя, когда он станет доступен - PullRequest
0 голосов
/ 13 мая 2011

Я хочу разрешить пользователям на сайте ставить в очередь отчет (введите запрос в таблицу sql).Очередь будет обрабатываться приложением Windows, которое будет считывать очередь с сервера sql, запускать отчеты и обновлять поле reportcomplete в записи.Мне нужно иметь возможность опубликовать сообщение, напоминающее «Создание отчета», а затем предупредить пользователя, когда отчет будет доступен.Я поиграл с SQLDependency и могу запустить событие onchange, но, конечно, не могу вернуться на страницу, которая уже загружена в браузер.Практически нет идей о том, как этого добиться, и я думаю, что SQLDependency может оказаться неправильным путем.Есть идеи?

1 Ответ

0 голосов
/ 13 мая 2011

HTTP не может подключиться обратно к клиенту. Единственное решение - опросить клиента, обычно с помощью длинного хвоста (например, Comet Ajax ). Таким образом, исходный запрос страницы возвращается, сценарий запускается на странице результатов и отправляет фоновый запрос, который вводит код ASP.Net и блокирует событие. SQLDependency уведомляет об этом событии, поэтому запросы длинного хвоста повторно активируются и возвращают ответ агенту, который теперь завершает вызов Ajax и может обновить страницу. По крайней мере, это 10000 футов. Это будет работать, но не будет масштабироваться (в основном из-за ресурсов, связанных запросом Ajax, заблокированного потока обработки ASP.Net). Существуют более масштабируемые подходы, но они значительно сложнее.

...