Как создать односторонний веб - сервис?
Привет всем, название вопроса может быть недостаточно ясным, позвольте мне объяснить предысторию здесь:
Я хотел бы создать веб-сервис, который генерирует PDF-файл и отправляет его на принтер, вот рабочий процесс:
1. пользователь отправляет запрос в веб-службу, вероятно, запрос будет одноразовым, чтобы пользователь не страдал от ожидания завершения задания. Пользователь может получить HTTP200 и продолжить свою работу.
2. Как только веб-служба получила запрос, так как я не хочу сливать весь ресурс на этот сервер, я могу использовать шаблон producer consumer здесь, там может быть очередь, чтобы поставить в очередь клиентские задания, и обрабатывать их один за другим.
Мои вопросы таковы:
1. я новичок в C#, каков правильный шаблон для очереди и обработки их? Должен ли я использовать ConcurrentQueue и ThreadPool для его архивирования?
2. Как правильно уведомить Пользователя о том, что задание выполнено успешно/неудачно? Вместо того, чтобы использовать услугу callback, является асинхронный идеальным образом? Меня беспокоит то, что в очереди может быть много заданий, и я не хочу, чтобы клиент страдал от ожидания их завершения.
3. веб-служба помещается за балансировщиком нагрузки, как я могу поддерживать "очередь процессов" среди них? Я пробовал использовать Hangfire, и это кажется нормальным, есть ли альтернатива?
4. Как я могу узнать, сколько заданий находится в очереди/ как поток может быть запущен в данный момент? Веб-сервис будет развернут на IIS, есть ли собственный способ архивировать его или я должен реализовать вызов веб-службы для их получения?
Любая помощь будет оценена по достоинству, спасибо!
Что я уже пробовал:
Для прототипа теперь я просто создам новый поток для каждого запроса, чтобы обработать запрос клиента. Однако пользователь никак не может узнать, является ли запрос успешным или нет.
Gerry Schmitz
Похоже, ты читаешь сценарий. Если бы вы понимали, о чем просите, вы бы и половины не просили.