Советы по фоновой обработке в .net - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть веб-страница, которая читает данные из внешнего источника.Для извлечения данных может потребоваться некоторое время.

Мне было интересно, может ли кто-нибудь дать мне представление о том, как лучше всего это сделать в фоновом режиме.Я хотел бы, чтобы страница появилась и отображала «Обработка» (или что-то в этом роде) на панели, где в конечном итоге будут отображаться данные.

Я думал о компоненте BackgroundWorker, или, возможно, AsyncPostBackTrigger ...не уверен, что это решит проблему, к моему удовлетворению.

Итак ... у кого-нибудь есть идеи относительно хорошего подхода к проблеме?

Спасибо за совет !!

Ответы [ 4 ]

1 голос
/ 30 сентября 2010

Я думаю, что вы ищете Ajax . Вы хотите сделать запрос со стороны клиента таким образом, чтобы пользователь мог продолжить просмотр другого контента дозагружает.

.NET имеет несколько различных методов поддержки запросов AJAX - от UpdatePanel элементов управления до асинхронных операций .Какой метод вы используете, зависит от того, что именно вы пытаетесь сделать.

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

0 голосов
/ 01 октября 2010

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

0 голосов
/ 30 сентября 2010

Ну, одним из решений является размещение asp:Timer на вашей странице внутри панели обновлений *.Пусть событие OnTick извлекает текущий статус обработки (процент выполнения, если он выполнен, что он делает и т. Д.).Существуют различные способы, которыми обрабатывающая часть может уведомить страницу о своем прогрессе;просто дать ему свойство progress и обновить его во время работы - это один из способов сделать это.Обратите внимание, что событие OnTick НЕ будет выполнять обработку;это просто для выяснения статуса обработки.

* Если вы поместите его за пределы панели обновления, он будет отмечать каждый Interval вместо каждого Timer.Interval + TimeToReloadUpdatePanel, что будет большой проблемой, если TimeToReloadUpdatePanel >= Timer.Interval.

0 голосов
/ 30 сентября 2010

Я бы использовал AJAX, отправил бы страницу пользователю с сообщением обработки, а затем запросил бы внешний источник из XmlHttpRequest, используя JavaScript (через ваш сайт в качестве прокси).

...