我在使用.Net TcpClient/Sockets編寫HTTP客戶端。.Net C#TcpClient/Socket HTTP客戶端性能/效率
到目前爲止,客戶端通過遍歷NetworkStream響應(在向TcpClient寫入GET請求之後),解析報頭並檢索相關消息體字節/分塊字節來處理Content-Length和分塊響應。爲此,它使用NetworkStream ReadByte方法。
這一切工作正常,但性能是應用程序的一個關鍵考慮因素,所以我想盡可能快速和高效。
最初,這將涉及將ReadByte替換爲郵件正文(基於Content-Length)的Read或分塊郵件正文字節檢索到適當大小的緩衝區中,在所有其他區域中使用ReadByte(例如,讀取Headers,Chunk大小等等)。
我很想知道更好的/不同的方式來達到最佳性能的想法嗎?顯然,HTTP的主要問題是不知道響應流的長度,除非它在檢索時被解析。
有一個具體的原因,爲什麼我沒有使用更多的抽象類(例如HttpWebRequest)(我需要在套接字級更好的控制)。
非常感謝,
克里斯
順便說一句我很好奇 - 你提到你需要對Socket/Connection進行細粒度的控制,這就是爲什麼你不使用HttpWebRequest。你能告訴我們那些原因嗎? – feroze 2009-12-02 01:58:06
我想模擬一個數字(可以說200個)Web客戶端,並且要做到這一點我希望每個客戶端都作爲一個線程來管理自己的連接,在多個不同請求期間保持打開狀態,暫停等等。客戶端將達到相同的終點(與標準負載測試工具非常相似的功能)。 我不相信HttpWebRequest可以實現這一點,因爲連接是通過服務點來處理的,該服務點可以停止這種粒度控制級別? – Chris 2009-12-02 11:46:40
對不起,我還應該說我需要捕獲的信息,如第一個字節的時間,重新連接數等... – Chris 2009-12-02 12:11:44