System.Net.HttpWebRequest & pipelining
The System.Net.HttpWebRequest class in the .Net Framework implements a HTTP stack in managed code. One of the features of the stack is that it supports HTTP pipelining. Pipelining is the ability for an HTTP client application to send multiple requests on a connection before the server responds to the first request. Wikipedia describes pipelining here: https://en.wikipedia.org/wiki/HTTP_pipelining
This post is to give seasoned users of the HttpWebRequest class a heads up about a design change in the way we handle pipelining in version 2.0 of the .Net Framework. In 2.0 we throttle pipelined requests as follows:
If the number of sent pipelined requests reaches 10, no more requests will be written to the server (pipeline “paused”). When the number of written pipelined requests drops to 5 or less, because of processed responses, more requests will be written to the server if possible (pipeline “unpaused”). Of course all the other factors influencing pipeline-ability are still considered. The values of 10 and 5 noted above are not configurable by the developer. This throttling mechanism was introduced so as to not overwhelm servers after a number of requests are queued up on the server side.
Comments
- Anonymous
July 17, 2006
Recently, a number of current and former System.Net team members have posted about various managed code network... - Anonymous
July 17, 2006
PingBack from http://microsoft.wagalulu.com/2006/07/18/systemnethttpwebrequest-pipelining/ - Anonymous
July 17, 2006
PingBack from http://microsoft.wagalulu.com/2006/07/18/recent-systemnet-related-postings/ - Anonymous
April 03, 2008
PingBack from http://cesar.newssiteworld.com/pipeliningsystem.html