Веб-сервис Asynchronus с использованием WS-адресации - PullRequest
1 голос
/ 12 ноября 2008

Мне нужно реализовать веб-службу с включенной адресацией WCF WS, которая выполняет длительный процесс на основе аргументов метода.

Клиенту не нужно ждать результата, поскольку он будет доставлен непосредственно в таблицу базы данных. Тем не менее, веб-метод должен вернуть номер «отслеживания идентификатора» (на самом деле GUID), чтобы клиент мог использовать его для получения результатов из базы данных.

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

Заранее спасибо

Sekar

1 Ответ

2 голосов
/ 12 ноября 2008

Какой у вас вопрос? Но из вашего описания сам веб-сервис не является асинхронным. В веб-приложении на Java я бы реализовал простое веб-приложение, подобное этому:

  • веб-сервис, хранящий данные, запускающий поток и возвращающий guid
  • поток выполняет долгосрочную задачу и сохраняет результат для своего guid
  • веб-сервис, возвращающий результат для guid или fould, если он еще не закончен.

Лучшей практикой будет использование собственной группы потоков deamon для долгосрочных задач, каждый поток которой называется с помощью guid. Переопределите метод uncaughtException () группы, чтобы сохранить исключение как результат для guid при любой ошибке.

...