none
webservice demorando pra responder quando retorna muitos dados RRS feed

  • Pergunta

  • Olá pessoal! Criei um webservice que retorna dados de uma base em access que fica lá no servidor, o

    problema consiste quando o dataset vai mandar os dados da tabela que possui 8000 registros, o sistema

    trava à espera dos dados de retorno, daí me pergunto:

     

    ? Será que o servidor depois de um tempo está cancelando a conexão ?

    ? Será que devo trazer os dados aos poucos, mas... como eu faria isso ?

    ? Será que eu estou realmente falando bobagem e isso tudo ta errado ?  ............... Espero que me ajudem.

    sexta-feira, 21 de novembro de 2008 16:29

Todas as Respostas

  • Salino,

     

    Dependendo da sua string de conexão, é possível que ocorra um erro de time-out do comando que está consultando os registros. Aumente a propriedade CommandTimeOut do comando se for o caso.

     

    Link com informações sobre a propriedade CommandTimeOut:

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx

     

    No seu caso, acho que seria necessário fazer uma chamada assíncrona ao método do Web Service, assim o usuário poderia fazer outra coisa em sua aplicação enquanto essa espera o retorno do Web Service.

     

    Link sobre como fazer chamadas assíncronas com Web Service:

    http://msdn.microsoft.com/en-us/library/aa480516.aspx

     

    Verifique também se não é possível implementar alguns filtros antes de enviar os 8000 registros para o cliente, que é muita coisa.

     

    Espero ter ajudado.

     

    Ari

     

     

     

     

     

     

    domingo, 23 de novembro de 2008 16:36
  • Complementando...

     

    Vc pode usar o atributo Bufferresponse=false em

    [WebMethod(BufferResponse=false)]

     

    sem isso o service primeiro carrega os 8000 registros na memoria depois serializa tudo duma vez e so ai envia para o cliente....

     

    com esse atributo... ele começa a serializar e retorna o resultado conforme os registros vao sendo carregados...

     

    não é a solução... acho que vai demorar a mesma coisa quase, pq o access com 8000 registros... é de se pensar em usar o SqlServer Express ou algum SGBD OpenSource como o MySql, Postegree, Firebird... so que assim acho q vai evitar problemas de timeout....

     

     

     

    quinta-feira, 27 de novembro de 2008 20:11
    Moderador