我将一个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