Распространенные способы обработки длительных процессов в ASP.NET - PullRequest
2 голосов
/ 13 августа 2010

У нас есть длительный процесс передачи данных, который является просто страницей asp.net, которая вызывается и запускается. Это может занять до пары часов. Кажется, все работает хорошо, но мне просто интересно, каковы некоторые из наиболее популярных способов справиться с таким долгим процессом. Вы создаете приложение и запускаете его с помощью планировщика Windows, веб-службы или пользовательского обработчика?

Ответы [ 4 ]

2 голосов
/ 26 августа 2010

В проекте для длительных задач в веб-приложении я сделал службу Windows.всякий раз, когда пользователь должен выполнить трудоемкую задачу, IIS передает задачу службе, которая возвращает маркер (временное имя для задачи), и в фоновом режиме эта задача выполняется службой.В любое время пользователь увидит состояние своей задачи, которая ожидает выполнения в очереди, обрабатывается или завершена.Служба будет выполнять фиксированное количество параллельных заданий и будет хранить очередь для следующих входящих задач.

2 голосов
/ 13 августа 2010

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

0 голосов
/ 13 августа 2010

Я использую два типа процессов в зависимости от потребностей моих БА. Для процессов передачи, которые выполняются по требованию и могут планироваться регулярно, я обычно пишу приложение WinForms (это персональные настройки), которое принимает параметры командной строки, чтобы я мог планировать задание с помощью параметров или запускать его по требованию через интерактивное окно. Я написал достаточно их за последние несколько лет, чтобы у меня была собственная базовая универсальная оболочка, которую я использую для создания новых приложений такого рода. Для процессов, которые должны обнаруживать события (файлы, появляющиеся в папках, получать вызовы CyberMation или обнаруживать ловушки SNMP), я предпочитаю использовать службы Windows, чтобы они всегда были доступны. Это немного сложнее, просто потому, что вы должны быть намного осторожнее с использованием памяти, утечками, утилизацией, безопасностью и т. Д. Для меня приложение Windows имеет тенденцию работать быстрее при выполнении длинных заданий, чем при выполнении процесса IIS. Я не знаю, связано ли это с тем, что он подключен к потоку IIS или его память / безопасность более ограничены. Я никогда не исследовал это.

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

0 голосов
/ 13 августа 2010

Windows Workflow Foundation

Что мне больше всего нравится в WF, так это то, что рабочие процессы можно без особых сложностей спроектировать так, чтобы сохранялось в SQL Server , поэтому, если сервер перезагружается в середине процесса, рабочий процесс может резюме.

...