Фоновый процесс на веб-сервере с ASMX Webservice - PullRequest
3 голосов
/ 29 ноября 2011

Я столкнулся с проблемой, мне нужно получить запрос пользователя через веб-сервис asmx, и для каждого запроса мне нужно:

1) Отправить пользователю идентификатор для его запроса.Что-то вроде: «Ваш запрос был получен с идентификатором ####».(Идентификатор генерируется БД, столбец автоинкремента.)

2) Запустите фоновый процесс, не блокируя пользователя для ответа, я имею в виду, что веб-служба отправляет обратно идентификатор и запускает процесс в фоновом режиме.

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

Iпонятия не имею о выполнении этой задачи.Я буду признателен за вашу помощь.

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

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

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

С этим (возможно, не этим элегантным подходом) я получаю следующие преимущества:

  • Обходить фоновую многопоточность в ASP.NET вообще (что я, честно говоря, не до конца понимаю)
  • Обеспечение правильной работы фоновой обработки при перезапуске приложения ASP.NET.

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

0 голосов
/ 30 ноября 2011

Я бы просто запустил фоновую задачу (возможно, в вашем global.asax), которая работает из очереди зарегистрированных запросов, подбирает их и фактически выполняет.

Ваш метод .asmx будет просто добавляться в эту очередь (включая ID), поэтому он может немедленно вернуться к пользователю во время обработки задачи в фоновом режиме ...

0 голосов
/ 29 ноября 2011

Вы можете использовать MSMQ.Создайте очередь для обработки входящих запросов и службу для извлечения задач из очереди и их обработки.Трудно предложить «правильное» решение, не зная больше о ваших особенностях.

...