The fastest result for me is using 75 threads performing httpwebrequest synchronization. About 140 requests per second on a Windows 2003 server, connection 4core 3ghz, 100mb.
Async Httprequest / winsock stuck around 30-50 req / sec. Did not test winsock synchronization, but I assume that this will give you the same result as httpwebrequest.
Tests were against 1,200,000 blogs.
The last month struggled with this, so it would be interesting to know if someone managed to squeeze more out of .net?
EDIT
New test: it turned out 350req / sec with the xfserver iocp component. Used a bunch of threads with one instance each before any big result. There were some really annoying bugs in the "client side" of the lib that complicated the implementation, and then the "server side". Not what you ask for and not recommended, but some kind of step.
Next: the previous winsock test did not use 3.5 SocketAsyncEventArgs, which will be next.
ANSWER
The answer to your question is no, it will not be worth the effort. The async HttpWebRequest methods unload the main stream when stored in the background, this does not improve the number / scalability of requests. (at least not in 3.5, maybe different in 4.0?)
However, you should pay attention to creating your own shell around asynchronous sockets / SocketAsyncEventArgs, where iocp works, and, possibly, implement a start / end template similar to HttpWebRequest (for the simplest implementation in the current code). The improvement is really huge.
Simon
source share