2013-07-10 3 views
1

Возможно ли создать функцию в веб-службе с несколькими потоками, которая возвращает значение пользователю, и которое продолжает обрабатывать транзакцию? Я никогда не использовал многопоточность раньше, и, похоже, я тоже смог бы запустить транзакцию асинхронно. Код еще не написан. Попытка выяснить, возможно ли это до начала кодирования.Многопоточность в веб-сервисе

+4

Как правило, вы передавали бы длительные задачи службе Windows или что-то подобное. [Этот пост SO] (http://stackoverflow.com/q/13038823/102937) предлагает использовать [NServiceBus] (http://particular.net/). –

+0

Что произойдет, если обработка транзакций завершится с ошибкой? Было бы слишком поздно информировать клиента, потому что вы уже ответили. Как правило, это плохая идея в любом случае ставить длительные процессы в IIS. –

+0

Вы имеете в виду службу WCF или устаревшую службу ASMX? –

ответ

1

Несмотря на то, что вы можете отключить потоки и т. П., Как и любое другое приложение .NET, вы должны учитывать вашу операционную среду.

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

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

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