none
Thread na consulta de um Json RRS feed

  • Pergunta

  • Bom dia senhores,

    Preciso consultar alguns retornos em Json, mas estou com um problema de perfomance, para cada url tenho uma espera que gira em torno de 20 segundos, o que pra mim é muito. Pensei em usar algum tipo de paralelismo (talvez o system.Threading / Threading.Task). Alguém pode me da ruma luz de como usar esse recurso no trecho abaixo?

    WebRequest request = WebRequest.Create(new Uri(url));
    request.ContentType = "application/json; charset=utf-8";
    request.Method = WebRequestMethods.Http.Get;

    //AQUI ESTÁ O PONTO DA "DEMORA", QUANDO SE FAZ A CONSULTA NO RETORNO JSON

    WebResponse response = request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    retorno = reader.ReadToEnd();
    new RetornoJson(retorno);
    Console.WriteLine(retorno);

    Obrigada =)

    segunda-feira, 11 de maio de 2015 14:05

Respostas

  • Bom dia Renato,

    Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)

    Desde já, obrigada.

    Resolvi o problema com usando esse método: 

      public async Task<string> ConsultaApiAsync(String url)
            {
                var uri1 = new Uri(url);
                using (var httpClient = new HttpClient())
                {
                    var response = await httpClient.GetAsync(uri1);
                    return (await response.Content.ReadAsStringAsync());
                }
            }

    Vlw ;)

    • Editado Helena Mam terça-feira, 12 de maio de 2015 19:01
    • Marcado como Resposta Helena Mam terça-feira, 12 de maio de 2015 19:01
    terça-feira, 12 de maio de 2015 13:21

Todas as Respostas

  • Helena,

    Escrevi tempos atrás uma artigo sobre processamento paralelo e assíncrono no .NET Framework. Acredito que o mesmo possa ser útil para o que vc precisa:

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/29709.processamento-paralelo-e-assincrono-no-net-framework.aspx

    segunda-feira, 11 de maio de 2015 14:09
  • Bom dia Renato,

    Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)

    Desde já, obrigada.

    Resolvi o problema com usando esse método: 

      public async Task<string> ConsultaApiAsync(String url)
            {
                var uri1 = new Uri(url);
                using (var httpClient = new HttpClient())
                {
                    var response = await httpClient.GetAsync(uri1);
                    return (await response.Content.ReadAsStringAsync());
                }
            }

    Vlw ;)

    • Editado Helena Mam terça-feira, 12 de maio de 2015 19:01
    • Marcado como Resposta Helena Mam terça-feira, 12 de maio de 2015 19:01
    terça-feira, 12 de maio de 2015 13:21
  • Bom dia senhores,

    Preciso consultar alguns retornos em Json, mas estou com um problema de perfomance, para cada url tenho uma espera que gira em torno de 20 segundos, o que pra mim é muito. Pensei em usar algum tipo de paralelismo (talvez o system.Threading / Threading.Task). Alguém pode me da ruma luz de como usar esse recurso no trecho abaixo?

    WebRequest request = WebRequest.Create(new Uri(url));
    request.ContentType = "application/json; charset=utf-8";
    request.Method = WebRequestMethods.Http.Get;

    //AQUI ESTÁ O PONTO DA "DEMORA", QUANDO SE FAZ A CONSULTA NO RETORNO JSON

    WebResponse response = request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    retorno = reader.ReadToEnd();
    new RetornoJson(retorno);
    Console.WriteLine(retorno);

    Obrigada =)

    http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4
    terça-feira, 12 de maio de 2015 19:53
  • Bom dia Renato,

    Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)

    Desde já, obrigada.

    Resolvi o problema com usando esse método: 

      public async Task<string> ConsultaApiAsync(String url)
            {
                var uri1 = new Uri(url);
                using (var httpClient = new HttpClient())
                {
                    var response = await httpClient.GetAsync(uri1);
                    return (await response.Content.ReadAsStringAsync());
                }
            }

    Vlw ;)

    http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4
    terça-feira, 12 de maio de 2015 19:53