У нас есть удаленный одноранговый сервер, работающий в отдельной службе Windows (назовем ее RemotingService). Клиентами RemotingService являются экземпляры ASP.NET (многие многие).
В настоящее время клиенты удаленного взаимодействия вызывают RemotingService и блокируют, пока обслуживается вызов RemotingService. Однако служба удаленного взаимодействия становится достаточно сложной (с большим количеством вызовов RPC и сложными алгоритмами), поэтому рабочие потоки asp.net блокируются на длительное время (4-5 секунд).
Согласно этой статье MSDN , это не будет хорошо масштабироваться, потому что рабочий поток asp.net блокируется для каждого удаленного RPC. Рекомендуется переключиться на асинхронные обработчики, чтобы освободить рабочие потоки asp.net.
Назначение асинхронного обработчика
освободить пул потоков ASP.NET
поток для обслуживания дополнительных запросов
в то время как обработчик обрабатывает
оригинальный запрос.
Это выглядит нормально, за исключением того, что вызов удаленного взаимодействия все еще занимает поток из пула потоков.
Это тот же пул потоков, что и рабочие потоки asp.net?
Как мне превратить мой удаленный одноранговый сервер в асинхронную систему, чтобы освободить рабочие потоки asp.net?
Я, вероятно, пропустил некоторую важную информацию, пожалуйста, дайте мне знать, если что-то еще нужно знать, чтобы ответить на вопрос.