У меня есть веб-сервис, реализованный с помощью WCF и размещенный в IIS7, с шаблоном связи с опросом при отправке. Первоначальный запрос сделан, который быстро возвращается и запускает фоновый процесс. Клиент опрашивает состояние фонового процесса. Этот интерфейс установлен и не может быть изменен (это симуляция внешнего сервиса, от которого мы зависим).
Я реализовал фоновую обработку, добавив еще один контракт на обслуживание к существующему сервису с контрактом на односторонние сообщения, который запускает длительный процесс. «Фоновый» сервис поддерживает базу данных обновленной со статусом для связи с основным сервисом. Это позволяет избежать создания каких-либо новых веб-служб или элементов для развертывания.
Проблема в том, что фоновый процесс сильно загружает процессор, и кажется, что он истощает вызовы других служб. Это займет весь процессор, и пока запущен один экземпляр фонового процесса, вызовы опроса состояния для основной службы могут занимать более минуты. Мне все равно, сколько времени займет фоновый процесс.
Есть ли способ ограничить использование ресурсов фоновым методом? Или очевидный способ сделать длительные асинхронные процессы в WCF без изменения моего контракта на обслуживание отправки / опроса? Поможет ли разделение их на разные веб-службы, если эти две службы все еще работают на одном сервере?