Используют ли клиенты ASMX или WCF Proxy порты завершения ввода-вывода? - PullRequest
1 голос
/ 18 февраля 2009

Я нахожусь в процессе тестирования производительности критической части моего проекта, когда замечаю множество дополнительных потоков, используемых для выполнения операций WaitOrTimerCallback.

альтернативный текст http://lh4.ggpht.com/_p7-jVU64mGg/SZuWgUvTD7I/AAAAAAAAAEk/PUFrXrYvZh0/threads_thumb%5B1%5D.jpg?imgmax=800

При ближайшем рассмотрении я вижу, что они создаются моим прокси-классом клиента ASMX для операций на удаленном сервере.

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

Можно ли заставить прокси-клиента ASMX или WCF использовать порты завершения ввода-вывода? Если нет - то какой смысл?

[ОБНОВЛЕНО] В проекте использовались прокси-клиенты ASMX. Похоже, что они используют обычный порядок пулов потоков для регистрации WaitOrTimerCallback. Я сейчас работаю с клиентами прокси WCF. Это не порождающие лишние потоки, поэтому я могу только предположить, что они используют нужные порты завершения ввода-вывода.

Класс Proxy ASMX был создан с использованием Visual Studio 2008. Я добавил следующую строку в файл проекта: «WebReference_EnableLegacyEventingModel> true» Поскольку в текущем варианте клиентов ASMX по умолчанию не включена Асинхронная.

1 Ответ

2 голосов
/ 18 февраля 2009

Я не могу говорить за ASMX, но WCF определенно говорит (и, как и вы, я бы удивился, если бы ASMX этого не сделал). Можете ли вы получить стеки вызовов, чтобы гарантировать, что они действительно заблокированы при сетевых вызовах (а не какой-либо другой код пользователя)?

...