Самым быстрым результатом для меня на данный момент является использование 75 потоков с синхронизацией httpwebrequest.Около 140 запросов в секунду на сервере Windows 2003, 4core 3 ГГц, 100 МБ соединения.
Асинхронный запрос Httprequest / winsock застрял со скоростью около 30-50 запросов / сек.Не тестировал синхронизацию winsock, но, думаю, это даст примерно тот же результат, что и httpwebrequest.
Тесты были проведены против 1 200 000 каналов блога.
В прошлом месяце мы боролись с этим, поэтому было бы интересно узнать, удалось ли кому-нибудь выжать больше из .net?
EDIT
Новый тест: Получено 350req / sec с компонентом xfserver iocp.Использовал кучу потоков с одним экземпляром каждый перед любым большим результатом.«Клиентская часть» библиотеки имела несколько действительно раздражающих ошибок, которые усложняли реализацию, чем «серверная часть».Не то, что вы просите и не рекомендуется, а какой-то шаг.
Далее: В предыдущем тесте winsock не использовалось 3.5 SocketAsyncEventArgs, что будет следующим.
ОТВЕТ
Ответ на ваш вопрос, нет, это не будет стоить усилий.Асинхронные методы HttpWebRequest выгружают основной поток, сохраняя загрузку в фоновом режиме, но не улучшают количество / масштабируемость запросов.(по крайней мере, не в 3.5, может отличаться в 4.0?)
Тем не менее, стоит обратить внимание на создание собственной оболочки вокруг асинхронных сокетов / SocketAsyncEventArgs, где работает iocp, и, возможно, реализует шаблон начала / конца аналогичноHttpWebRequest (для простейшей реализации в текущем коде).Улучшение действительно огромное.