Я создал пользовательский ThreadPool, который принимает задания от клиента, обрабатывает их и возвращает результаты.В настоящее время это работает в приложении MVC.Если пользователь загружает задание, которое должно быть выполнено с помощью формы, сервер обрабатывает его и возвращает отчет.Обработка включает в себя отправку запросов SOAP нескольким внешним службам и накопление ответа.
Недавно я создал приложение на базе Windows, которое может автоматизировать задачи загрузки, а также обрабатывать обратные вызовы для текущего состояния задания.Таким образом, я реализовал сервис WCF с netTCPBinding & Callback Contract и разместил его в консольном приложении.Все работает хорошо, приложение Windows получает обратные вызовы и т. Д. Но главная проблема заключается в производительности.Обработка одной и той же работы через запрос WCF занимает в 4 раза больше, чем загрузка вручную через приложение MVC.
Изначально я сомневался, что это задержка в общении, поэтому я применил секундомер для определения продолжительности каждого шага.Удивительно, что задержка не из-за задержки связи, это происходит - последняя процедура, которая делает SOAP-запросы к внешним сервисам.По моему мнению, это не зависит от режима передачи задания от клиента к серверу, и это также выполняется в отдельных потоках в Custom ThreadPool.
Я использую тот же API в приложении MVC и службе WCF.Логика, рутина все то же самое.Второе мое сомнение состояло в том, останавливает ли WCF / приостанавливает запущенные потоки для обработки новых запросов?
Кто-нибудь может понять, в чем может быть причина?Я могу предоставить больше информации, основываясь на том, что требуется.
Заранее спасибо за помощь