Шаблон для долгосрочных задач, вызываемых через ASP.NET - PullRequest
4 голосов
/ 01 апреля 2011

Мне нужно вызвать долгосрочную задачу со страницы ASP.NET и позволить пользователю просматривать ход выполнения задач по мере их выполнения.

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

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

Я недавно посмотрел на Windows Workflow и подумал, может ли он предложить решение?Я думаю о решении, которое могло бы выглядеть следующим образом:

ASP.NET AJAX page -> WCF Service -> MSMQ -> Workflow Service *or* Windows Service

У кого-нибудь есть какие-либо идеи, опыт или подобные вещи раньше?

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

У меня есть книга, в которой подробно рассказывается, как интегрировать WF (WorkFlow) и WCF. Здесь слишком много постов, очевидно. Я думаю, что ваш вопрос заслуживает более длительного ответа, чем на этом форуме, на который можно с готовностью ответить, но Microsoft предлагает некоторые рекомендации .

А поиск в Google по запросу "WCF and WF" дает множество результатов.


У меня действительно было приложение в разработке, где мы использовали аналогичный процесс, используя MSMQ. Идея заключалась в том, чтобы доставлять экстренные сообщения во все наши магазины в случае отзыва товара или известных проблем, которые затрагивают большое количество магазинов. Разработано и тестируется ОК.

В итоге мы не использовали MSMQ из-за требований бизнеса - нам нужно было знать, не было ли получено сообщение немедленно, чтобы мы могли позвонить в магазин, а не просто позволить магазину получить его, когда их ПК смог забрать сообщение из очереди. Тем не менее, это сработало очень хорошо.

Хорошей отправной точкой является статья, на которую я ссылался выше.


Наш текущий дизайн, тот, с которым мы начали работать, в точности соответствует тому, что вы спрашивали о службе Windows.

  • У нас есть веб-страница для ввода сообщений и выбора списков рассылки. - они сохраняются в базе данных
  • у нас есть отдельная служба Windows (мы называем это AlertSender), которая опрашивает базу данных и проверяет наличие новых сообщений.
  • ПК уровня хранилища имеют службу Windows, на которой размещается клиент WCF, который прослушивает сообщения (AlertListener)
  • Когда AlertSender находит сообщения, которые должны быть отправлены, он отправляет их AlertListener, который отвечает за отображение сообщения в магазинах и воспроизведение звука оповещения.
  • При отправке сообщений AlertSender обновляет статус сообщения в базе данных.
  • Когда магазины получают сообщение, сотрудник входит в # своего сотрудника и нажимает кнопку, чтобы подтвердить, что оно получило сообщение. (Критическое деловое требование для нас, потому что, если все магазины не получают сообщение, нам, возможно, потребуется физически позвонить им, чтобы они удалили испорченный продукт с полок и т. Д.)
  • Наконец, наша административная часть имеет отчет (ASP.NET), связанный с AlertId, который показывает все ожидающие сообщения и их состояние.
0 голосов
/ 01 апреля 2011

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

...