miércoles, 19 de mayo de 2010

Easy Callback

Donde estoy trabajando están implementado la interface ICallbackEventHandler para hacer llamadas asíncronas al servidor. Sucede que existe la necesidad de hacer varias llamadas asíncronas en una misma página cada una con diferente lógica, convirtiéndose en un extenso “Select Case” y un código engorroso tanto en el cliente como en el servidor, además existe la necesidad de implementar esta interface en un “User Control” pero no es posible por la manera que esta implementada en la página esta genera un error al ejecutarla.

De seguro debe haber implementaciones parecidas o mas elaboradas, bueno la intención es tener algo con la cual se pueda programar de una forma mas fácil y mas cómodamente, entonces entre lo que queremos lograr es:

  • Facilitar el uso de múltiples llamadas asíncronas en una misma página.
  • Hacer llamadas asíncronas desde una página y desde un control de usuario contenido en la página sin problemas.
  • Tener código limpio y fácil de mantener.

una de las ventajas de usar esta implementación es que podemos acceder al contexto de la página en que se ejecuta la llamada lo que no se podría en el caso de llamadas asíncronas con “web methods”. es decir tenemos las referencias a nuestros controles cargados en la página, enlazarlos nuevamente a la fuente de datos, rende rizarlos y enviarlos al cliente.

Codigo Fuente: EasyCallback.zip

Veamos como podemos utilizarlo:

  • Crear función en lado Servidor:

image

  • Registrar función en el evento OnInit de la página

image

  • Llamada del lado del cliente, la llamada se realiza exactamente con el mismo nombre registrado:

image

  • En un User Control seria lo mismo como en una página:

image

image 

Pdata. lo siento usualmente no escribo… así q me es un poco difícil, de seguro hay muchos errores ortográficos y gramaticales y cosas q ni me dejo entender bueno la intención vale(buena excusa)… tratare de mejorar!

Me olvidaba el ejemplo esta en VS2010 pero la solución aplica desde el Framework 2.0 adelante.

Gracias a los que le dieron por lo menos un vistazo.