none
Problema Duplex com silverlight RRS feed

  • Pergunta

  • ola galera... 

    to usando o duplex com silverlight..mas ta dificil.. quando eu executo a aplicação e tento usar uma metodo do serviço o negoco não vai..ta muito devagar... cerca de 1 min pra chegar no metodo do serviço..e 2 minutos pro serviço retornar a resposta... 

    bom.. e depois de um tempo ele retorna a seguinte exception:

    This request operation sent to http://localhost:26096/ServiceHost/Service.svc did not receive a reply within the configured timeout (00:01:00).  The time allotted to this operation may have been a portion of a longer timeout.  This may be because the service is still processing the operation or because the service was unable to send a reply message.  Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.

    eu ja configurei quase tdas as properties de timeout e nada... mas o problema maior eh q ta muito lento... quando chamo um metodo do serviço ele demora d+... isso não acontecia quando usava o basicHttpbinding... 

    a implementação foi de acordo com o link: http://www.israelaece.com/post/Polling-Duplex.aspx

    OBS: uso o SL3 

    Abraços

    Ozzyvegeta
    quinta-feira, 9 de setembro de 2010 12:06

Todas as Respostas

  • Fala galera... o negoco ta feio ... não acho o problema nem ferrando... se alguem ai ja passou por isso agradeceria a ajuda...

    Vai ai todas as informações necessárias para a avaliação do problema:

     

        Serviço:


        [ServiceContract(Namespace = "IGame.Core.Business", CallbackContract = typeof(ICallbackGame))]

        [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]

        [ServiceKnownType(typeof(GameException))]

        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

        public class ServiceGame

        {

            [OperationContract]

            public GameConfig GenerateCustomConfig(...) {

              // *** PASSO 2: DEPOIS DO RETURN DEMORA CERCA DE 1 a 2 MINUTO PARA CAIR NO COMPLETE DO SILVELIGHT

               return new GameConfig(...);

            }

            ...

        }

     

        Interface de callback:

     

        [ServiceContract]

        public interface ICallbackGame

        {

            [OperationContract(IsOneWay = true)]

            void OnResponseMove(string msg);

        }

     

        SilverLight invoke:

     

        public MainPage()

        {    

           EndpointAddress ea = new EndpointAddress("http://localhost:3807/ServiceHost/ServiceGame.svc");            

           var duplex = new PollingDuplexBindingElement();

           var element = new TextMessageEncodingBindingElement();

           var transport = new HttpTransportBindingElement();

           CustomBinding cb = new CustomBinding(duplex, element, transport);

     

           // *** TESTE PARA TENTAR ALTERDAR A MSG DA EXCEPTION DE (00:01:00) 

           // *** para o valor indicado abaixo (NÂO FUNCIONOU!!!)

           //cb.CloseTimeout = new TimeSpan(0,2,20);

           //duplex.InactivityTimeout = new TimeSpan(0, 5, 50);

           //duplex.ClientPollTimeout = new TimeSpan(0, 0, 0, 1);

     

           this.client = new ServiceGameClient(cb, ea);

     

           // set metodo de complete

           this.client.GenerateCustomConfigCompleted += GenerateCustomConfig_Completed;

     

           // *** PASSO 1 - NESSE PONTO DEMORA CERCA DE 20 SEGUNDOS PARA CHEGAR NO SERVIÇO

           this.client.GenerateCustomConfigAsync(...);

        }

     

        public void GenerateCustomConfig_Completed(object sender, GenerateCustomConfigCompletedEventArgs e)

        { 

            // *** PASSO 3 - DEMORA PARA CHEGAR AKI

            this.gameConfiguration = e.Result;

        }

     

        Infraestrutura:

     

        - Estou usando o Factory do link do primeiro post.

        - Não existe configurações nos .config, esta tudo de forma imperativa.

        - O serviço esta como arquivo .svc no meu WebProject.

        - Utilizo o Windows Vista com o VS2008, Microsoft Silverlight Projects 2008 Version 9.0.30730.126, tenho tb o VS2010.

        - Note com Wireless

     

    Bom é isso ae pessoal.. acho que coloquei todas as informações ai... se vcs tiverem alguma ideia do q pode ser ficaria muito gratificado...

    ja não sei muito oq fazer..pensei q fosse algum problema com threads, mas sei lah.. ta td conforme manda os mandamentos na web... segui todos os artigos certinho...

     

    ha, uma ultima observação, no firefox as coisas são POUCA coisa mais rapida que no IE 8.

    []s

     


    Ozzyvegeta
    sexta-feira, 10 de setembro de 2010 04:18
  • Broder, 

    Estou com o mesmo problema. Vc conseguiu encontrar a solução?

    Abs,

    Wagner


    Wagner Araújo

    segunda-feira, 10 de dezembro de 2012 18:37
  • Rapaz, Estava testando este serviço duplex do silverlight outro dia e o meu também estava pra lá de lento. Pesquisei e vi que tem algumas manhas para tornar um pouco mais rápido. Umas das manhas é retirar o atributo:

     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    do serviço e do web.config, nas configurações dos serviços.

    Outra manha, é utilizar o nettcp como método de binding do serviço. Vi que fica bem mais rápido (não testei), mas tem umas limitações acerca da utilização em alguns ambientes. Se não me engano, só funciona em intranet.

    A minha conclusão acerca desse serviço duplex do silverlight é nota 5. Pelo pouco que eu testei e pesquisei, eu vi que é de ruim pra péssimo. Se deseja um serviço de "long pooling" de verdade, utilize a biblioteca "SignalR" com asp.net webforms, essa sim, é show de bola e muito simples de usar.

    sexta-feira, 4 de janeiro de 2013 11:32
  • Só pra tirar a dúvida, fiz tudo quanto é manha que encontrei na net pra fazer o meu serviço rodar pelo menos com uma velocidade aceitável, mas sem sucesso. Consegui até melhorar um pouco, mas ainda continuava mt lento. Cerca de 5 a 8 segundos pra retornar os dados.
    sexta-feira, 4 de janeiro de 2013 11:35