Мне нужно создать службу WCF, которая принимает запрос клиента и внутренне подключается к удаленной машине для выполнения этой работы. Удаленная машина имеет очень хорошую производительность, но не высокую скорость обработки. Это означает, что он может обрабатывать, например, 1000 транзакций в секунду, но каждая транзакция может занимать 1 секунду, поэтому единственный способ - запустить 1000 одновременных транзакций в одну секунду.
Удаленная машина очень хорошо справляется с этой ситуацией, но меня беспокоит WCF, если каждая транзакция внутренне (меня не волнует модель на стороне клиента (синхронизация или асинхронизация)) ожидает и блокирует поток внутри сервера на 1 или 2 в секундах это может означать 1000 рабочих потоков, работающих в реальном времени, и это может быть очень опасно, или, возможно, WCF использует пул потоков и просто переводит запрос других в состояние ожидания, и это тоже плохо.
Итак, мой вопрос о возможности асинхронной обработки запроса на стороне сервера. Таким образом, поток транзакций должен быть таким:
- Клиент инициализирует запрос (на его стороне синхронный запрос)
- Сервер получает запрос и помещает его в очередь транзакций и освобождает поток
- Когда задача завершается, сервер завершает запрос, отправляя HTTP 200 и результат клиенту.
Спасибо!