Распараллеливание нескольких запросов в ASP.NET/C# - PullRequest
0 голосов
/ 25 октября 2019

У меня есть веб-приложение asp.net, которое позволяет пользователю запрашивать создание чертежа для набора пользовательских параметров. Это создание чертежей происходит на отдельном сервере, который доступен через API.

Таким образом, когда пользователь делает запрос на чертежи, приложение выполняет асинхронный вызов API для сервера чертежей. Я не блокирую страницу и не возвращаюсь до завершения задачи с сообщением «Отправлено для обработки». Пользователь может использовать отдельную кнопку (Обновить состояние), чтобы опросить обновление статуса. Это работает нормально, пока не поступит 5 или 6 запросов, а затем сервер чертежей изменится.

Создание чертежа на сервере чертежа очень сильно загружает процессор, поэтому я хотел бы реализовать очередь в приложении, которая позволяетдо 4 запросов, которые нужно пройти, и ставить все в очередь после этого, чтобы они проходили только после завершения предыдущего запроса в порядке «первым пришел - первым вышел». Каждый запрос на рисование имеет свойство status, которое позволяет нам знать, когда оно будет выполнено.

Какова лучшая структура, которую я могу рассмотреть, или пример, которому я могу следовать, чтобы достичь этого? Все статьи и примеры, с которыми я столкнулся, используя Parallel.ForEach или Parallel.Invoke или Semaphores, похоже, «знают» список действий, которые нужно выполнить. В моем случае статический список добавляется в любое время, когда появляется новый запрос пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...