В настоящее время мы улучшаем приложение ASP.NET, которое выполняет кавычки для ряда продуктов.
В настоящее время существующий механизм котировок в основном представляет собой большую хранимую процедуру (2-3 секунды на вызов), за которой следует небольшой объем бизнес-логики, которая выполняется после вызова процедуры.
Мы рассматриваем многопоточность вызовов для каждого продукта, чтобы ускорить набор предложений.
Наш текущий подход заключается в том, чтобы инкапсулировать каждую работу по продукту в потоке ThreadPool. Кажется, это работает намного лучше, но меня немного беспокоит, что, несмотря на то, что он хорошо работает с небольшим количеством пользователей, он будет хорошо масштабироваться в производственной среде?
Обратите внимание, что в настоящее время мы не используем асинхронные методы ADO.NET.
Примечание. Наш код, который вызывает ThreadPool, имеет регулятор, который ставит запросы в очередь, поэтому мы можем использовать только настраиваемое количество потоков из ThreadPool за один раз. Нам также не нужно ждать результатов котировки на той же странице, мы даем пользователю возможность прогрессировать и проверять наличие обновлений (страница результатов цитаты использует AJAX для проверки результатов).
Примечание: предпочтительным решением будет использование очереди сообщений, поскольку служба цитат является односторонней операцией. Однако сроки реализации проекта не дали нам времени сделать это.
В то же время мы собираемся пересмотреть реализацию, чтобы использовать асинхронные методы ADO.NET (поскольку именно в этом и заключается весь длительный аспект процесса), за исключением необходимости использовать потоки ThreadPool.