none
Silverlight 4 y lentitud al visualizar datos de un servicio WCF RRS feed

  • Pregunta

  • Hola a todos,

    estoy cargando datos de un servicio WCF: la versión del producto en una caja de texto.

    Observo que primero se carga la página SL sin el dato y cuando la llamada asíncrona ha terminado se escribe el valor. Es decir hay un retraso de varios segundos. ¿hay alguna manera de evitar este desfase visual?

    Gracias!


    Thanks for your valuable help - Yours, Josep Balague
    jueves, 15 de septiembre de 2011 10:01

Respuestas

  • Hola Nestor,

    tu propuesta me implica trabajo extra por la cantidad de controles que puede tener uná página con esta problematica.

    En VB6 conseguia la sincronización de la pantalla a través de una api de Windows. Veo más lógico que SL ya tuviera su propio mecanismo que se encargara de esta lentitud.

    Gracias


    Thanks for your valuable help - Yours, Josep Balague
    viernes, 16 de septiembre de 2011 6:22

Todas las respuestas

  • Si y no... dado que todas las llamadas a la red son asíncronas, el despliegue visual siempre sucederá primero. Tenemos que trabajar bajo ese precepto.

    Podrías tomar otros caminos, como esconder el control que recibe el dato (o deshabilitarlo) y sólo hacerlo visible cuando el dato llegue.

    La idea de las llamadas asíncronas a la red es que no se bloquee la interfase con ellas.

     


    Blog: Silverideas
    • Propuesto como respuesta CorsarioVasco sábado, 17 de septiembre de 2011 8:23
    jueves, 15 de septiembre de 2011 15:44
  • Hola!

    Además de que una llamada a un servicio siempre va a tener un coste en tiempo, WCF suele tardar un poco más en realizar la primera llamada al servicio, esto es así porque es en ese momento en el que establece todo el contexto de seguridad, transporte y mensaje del Binding que se use.

    Una técnica suele ser realizar una llamada a un método "dummy" en cuanto se cargue la aplicación para que ese método se coma ese retardo extra de la primera llamada, de esa forma las subsiguientes llamadas serán mucho más rapidas.

    Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Propuesto como respuesta CorsarioVasco sábado, 17 de septiembre de 2011 8:23
    jueves, 15 de septiembre de 2011 16:52
    Moderador
  • Hola Nestor,

    tu propuesta me implica trabajo extra por la cantidad de controles que puede tener uná página con esta problematica.

    En VB6 conseguia la sincronización de la pantalla a través de una api de Windows. Veo más lógico que SL ya tuviera su propio mecanismo que se encargara de esta lentitud.

    Gracias


    Thanks for your valuable help - Yours, Josep Balague
    viernes, 16 de septiembre de 2011 6:22
  • Gracias Josue por tu comentario.

     

    como le he dicho a Nestor SL debería proporcionar mecanismos para este tema cuando se quiere llegar al desarollo de aplicaciones empresariales.

     

    Para mi es un bug de Silverlight.

     

    Gracias


    Thanks for your valuable help - Yours, Josep Balague
    viernes, 16 de septiembre de 2011 6:24
  • buenas

    no se trata de un bug en absoluto, te hemos dado respuestas para mejorar el problema, ¿ye has molestado en probarlas si quiera? o es mas sencillo, como suponen escribir codigo decir que es un bug? si no quieres aceptar la ayuda que te ofrecemos los que conocemos Silverlight y prefieres contebtarte y excusarte diciendo que es un bug, bien por ti, pero no marques eso como respuesta porque NO ES ASÍ

    Creeme, desarrollo aplicaciones empresariales con WPF y Silverlight y este no es un bug ni un impedimento.


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    viernes, 16 de septiembre de 2011 6:35
    Moderador
  • ¡Hola!

     

    ¡Que fervor!, no sé si meterme ;-). Veras, es que yo pasaba por aqui...

    Ese inconveniente que describes Josep existe pero las cosas son como son ;-). Busquemos rutas alternativas. Nestor apunta unas solución interesante, que vale, puede darte más trabajo, pero tampoco tanto. Josue apunta a un método "dummy". El cual ni lo había pensado.

    Y digo yo, mientras que te cargan los datos por qué no pones un BusyIndicator, que entre otras cosas, para eso están, y no cuesta tanto hacerlo. No lleva tantas líneas de código, lo personalizas y es reutilizable.

     

    Un saludo,

     

     

    sábado, 17 de septiembre de 2011 8:23
  • Buenos dias, pues como decia el compi Corsario... Yo pasaba por aqui.... jeje. Bueno he leido un poco el hilo y me gustaria hacer una preguntilla al aire. No se si sera lo mismo, pero ay lo dejo. El problema que tengo es que estoy haciendo un control de usuario en el que muestro un grid (No un datagrid) con columnas y filas. Y luego tengo una tabla con datos que me gustaria mostrar dentro del grid y posicionarlo en una posicion en concreta.

    Cuando ejecuto la aplicacion, crea las columnas, las filas y he creado un metodo Itemssource del tipo DomainDataSourceView. En esa propiedad asigno un reservasDomainDataSource, de un control DomainDataSource de los RIA Controls, y el problema viene que al hacer debug de la aplicacion me doy cuenta de que lo deja en null, por que primero crea el control con todas las filas, las columnas y la asignacion del metodo y por ultimo se ejecuta la Query. ¿Eso es por que se ejecuta el control sin darle tiempo de espera al servicio de datos?¿Y como puedo hacer para que, o bien primero se cargue la query antes que el control o que el control espere a que se realice la query?.

     

    PD: Espero haberme explicado bien.... jeje sino intentare explicarlo otra vez.... ;);) Saludos!!  

    miércoles, 28 de septiembre de 2011 8:35
  • ¡Hola osc2009!

    Puede ser por eso pero si no vemos como haces la carga no podemos saberlo ;-)

    Un ejemplo de carga tienes en: http://social.msdn.microsoft.com/Forums/es-ES/wpfes/thread/3c52a15f-76cb-406b-b0ff-caf6a23cce94

    De todas maneras sería conveniente que abrieras otra pregunta y desarrollaras más tu caso.

     

    Un saludo

    martes, 4 de octubre de 2011 19:23