2008-08-14 7 views
9

У нас есть удаленный однопользовательский сервер, работающий в отдельной службе Windows (назовем ее RemotingService). Клиентами RemotingService являются экземпляры ASP.NET (многие из них).Асинхронные удаленные вызовы

В настоящее время клиенты, удаляющие вызов RemotingService и блокируют при обслуживании вызова RemotingService. Однако удаленная служба становится достаточно сложной (с большим количеством вызовов RPC и сложными алгоритмами), что рабочие потоки asp.net блокируются в течение значительно длительного времени (4-5 секунд).

Согласно this msdn article, это не будет хорошо масштабироваться, потому что рабочий поток asp.net заблокирован для каждого удаленного удаленного RPC. Он рекомендует переключиться на обработчики async, чтобы освободить рабочие потоки asp.net.

Цель асинхронного обработчика , чтобы освободить в ASP.NET пул потоков поток для обслуживания дополнительных запросов в то время как обработчик обрабатывает первоначальный запрос.

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

Как я могу повернуть мой удаленный однопользовательский сервер в систему async, чтобы освободить мои рабочие потоки asp.net?

Возможно, я пропустил важную информацию, пожалуйста, сообщите мне, если есть что-то еще, что вам нужно знать, чтобы ответить на вопрос.

ответ

0

Идея использования ThreadPool заключается в том, что благодаря этому вы можете контролировать количество синхронных потоков, а если их слишком много, то пул потоков автоматически управляет ожиданием новых потоков.

Работающий поток Asp.Net (AFAIK) не поступает из пула потоков и не должен зависеть от вашего вызова службы удаленного доступа (если это не очень медленный процессор, а ваша функция удаленного доступа - это очень большой процессор интенсивный - в этом случае все на вашем компьютере будет затронуто).

Вы всегда можете разместить удаленную службу на другом физическом сервере. В этом случае рабочий поток asp.net будет полностью независим от вашего удаленного вызова (если удаленный вызов вызывается в отдельном потоке).

+0

Как указано в статье, связанной с вопросом, рабочий поток asp.net действительно поступает из пула потоков runtimes. – CVertex 2008-09-07 08:37:54

 Смежные вопросы

  • Нет связанных вопросов^_^