parts of an asynchronous httpwebrequest
有许多与httpwebrequest相关的内容可以异步进行。我记得在这里读到一个有关这个主题的问题,但似乎再也找不到了。所以我会再问这个问题。可以说,以下哪一项能带来最大的收益。
BeginGetRequestStream / EndGetRequestStream
BeginWrite / EndWrite
BeginGetResponse / EndGetResponse
BeginRead / EndRead
我知道BeginGetResponse必须与BeginGetRequestStream配对。因此,无需重申这一事实。
根据我所做的调查,似乎BeginRead / EndRead最具潜力。这有点令人震惊。看起来EndGetResponse的返回速度相当快,并且在"首次联系"之后以及任何实际数据读取之后会有明显的延迟。我很确定我会立即得到一些标题,然后是一个很长的延迟,然后是我想要的数据。
我想我的真正问题是:BeginGetResponse是否做错了什么?还是BeginRead真正有价值的参与者?
一如既往,在此先感谢。
EndGetResposnse(或者实际上是同步GetResponse)在接收到数据开始时返回。这可以占总响应时间的一小部分或很大一部分。
有了很大的响应,大部分时间不会花在等待任何这些上面,而是花在读取和处理流本身上。值得注意的是,这可以(尤其是如果Web服务器正在发送分块数据)在数据传入时进行解析。
因此,最大的性能获胜在于可以有效地将其传递到下一个水平的方式进行处理。一种方法是使整个处理过程变得异步,而不是使用httpwebrequest的异步方法。
另一个是,如果您要从响应中生成一个集合类型,请使用基于