2012-02-21 2 views
3

Клиент пришел ко мне с просьбой иметь веб-приложение, которое выполняет большую обработку в бэкэнд (читает из файла, записывает в веб-службу). Мой вопрос заключается в том, что, поскольку этот «процесс» (когда пользователь нажимает «Go») может занять несколько часов, как я могу его сделать, чтобы обработка продолжалась после закрытия пользователем веб-страницы? Пожалуйста, дайте мне знать, если это не имеет никакого смысла, и я могу дать больше информации. Любая помощь будет принята с благодарностью, спасибо!Создание отдельного процесса из запроса веб-приложения

+0

@DmitryBoyko [редактирование вопроса] (http://stackoverflow.com/spected-edits/206335) только для смелых определенных частей? В самом деле? – Basic

ответ

1

Для этого вам необходимо создать службу MS Windows.

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

+2

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

0

Лучшим возможным решением будет выполнение работы в службе Windows и использование вашего веб-приложения только для запуска обработки.

+0

Возможно ли иметь 2 окна в одном решении? –

+1

@ Исаак Левин - Да. В решении может быть много разных сервисов. Вы также можете установить несколько сервисов на одном компьютере. – Oded

+0

@Oded SO Я бы сделал что-то вроде этого примера http://www.fredmastro.com/post/Call-your-Web-Service-from-your-Web-Application.aspx –

0

Это, в основном, требование «пакетной работы», и именно так я предлагаю вам приблизиться к нему.

Клиент будет использовать веб-страницу, а не , выполнить работу, а управлять списком пакетных заданий, выполняющих работу. Планирование их, запуск или остановка, просмотр их состояния и текущего вывода и т. д. (Да, так же, как они это делали в 1970-х годах, но без «// FOOBAR JOB (123456)» ... слава богу.

Пользователь переходит на веб-страницу и вводит запрос. А обратно -end на хосте (диспетчер пакетных заданий ...) теперь запускает задание, возможно, на одном компьютере, возможно, по несколько раз. Пользователь может, тем временем, выйти из веб-сайта и делать все, что ему нравится Затем он может вернуться в любое время, вернуться к тому, что может быть на веб-странице мониторинга работы, и посмотреть, как обстоят дела. Остановите работу, приостановите/возобновите, какие у вас есть.

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

+0

Можете ли вы привести мне пример того, как это сделать? Похоже, это может быть маршрут, который мне нужно взять. –

Смежные вопросы