我將一個XML字符串發佈到AIX盒子上的一個端口。我有兩種連接到這個盒子的方式(TcpClient & HttpWebRequest)。我有定時器給我一個想法,讓我知道用AIX框處理我的請求和響應需要多長時間。性能比較TcpClient vs HttpWebRequest
看來TcpClient比HttpWebRequest快100毫秒。我懷疑我的計時器位置可能不正確。無論哪種方式,我不認爲計時器的位置會在響應時間上造成如此大的差異。
我的另一個想法是使用語句。也許他們保持連接打開比TcpClient更長。
已知TcpClient方法更快?
// TcpClient
TcpClient client = new TcpClient(host, port);
DateTime x = DateTime.Now;
NetworkStream stream = client.GetStream();
NetworkStream stream = client.GetStream();
stream.Write(request, 0, request.Length);
stream.Flush();
while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
response.Append(encoder.GetString(buffer, 0, count));
DateTime y = DateTime.Now;
totalMS = y.Subtract(x).TotalMilliseconds;
// HttpWebRequest
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URI);
using (Stream webStream = webRequest.GetRequestStream())
{
webStream.Write(postdata, 0, postdata.Length);
webStream.Close();
DateTime x = DateTime.Now;
using (WebResponse webresponse = webRequest.GetResponse())
{
webresponse.Close();
DateTime y = DateTime.Now;
using (Stream rs = webresponse.GetResponseStream())
{
using (StreamReader sr = new StreamReader(rs, Encoding.Default))
{
// Read response to end
}
}
}
}
totalMS = y.Subtract(x).TotalMilliseconds;
我更新了TcpClient示例。我忽略了流寫作。 – 2009-09-22 16:29:45
好的 - 但它仍然不是真的蘋果,因爲你只是寫了一堆數據和閱讀一堆數據。您沒有任何HTTP解析所需的頭文件解析等。現在,如果您需要使用結果數據來做到這一點,那麼您將不得不包含這一點。如果你不是由於協議不要求它,那麼你真的只是表明直接協議是有效的「瘦」,這並不奇怪。 – 2009-09-22 16:54:38