繁体   English   中英

为什么此HttpWebRequest在C#中运行缓慢

[英]Why is this HttpWebRequest slow in C#

我正在使用此代码执行简单的REST请求。 (代码主要来自此q: 如何将JSON发布到服务器? )。

为什么这么慢? 我正在使用VS 2013,第一次尝试大约需要15秒,然后大约需要4秒。 在随后的尝试中,我仍然可以使用另一种语言(Delphi)发出http请求,并且持续大约需要1秒钟。

        var request = (HttpWebRequest)WebRequest.Create("http://jsonplaceholder.typicode.com/posts");
        request.ContentType = "application/json";
        request.Method = "POST";
        request.ServicePoint.Expect100Continue = false;

        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            string json = new JavaScriptSerializer().Serialize(new
            {
                title = "foo",
                body = "bar",
                userId = "1"
            }); 
            streamWriter.Write(json);
        }

        var response = (HttpWebResponse)request.GetResponse();
        using (var streamReader = new StreamReader(response.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            textBox1.Text = result;
        }

PS:您可以自己测试此代码,只需使用网址上方的Internet上的测试REST服务器即可。

第一次尝试是什么意思? 这意味着我离开计算机一段时间后的第一次尝试

在到达服务器之前,需要执行一个查找服务器IP地址的过程。 此过程称为Dns分辨率

第一次,您的应用程序必须经过Dns解析过程才能找到IP地址。 解析IP地址后,该IP地址将被缓存在本地计算机中。

因此,进一步的呼叫不会经过Dns解析的过程; 它可以使用缓存的IP。 一段时间后,缓存将被删除,您将再次访问DNS服务器以解析IP地址。

对于您所注意到的延迟,这是我能提出的唯一解释。 每当您注意到延迟时,这可能意味着您是因为Dns服务器是第一次或缓存已过期而访问了Dns服务器。

为什么在其他环境(德尔福)中速度更快?

很抱歉,我无法提出充分的理由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM