Comunicación Silverlight – Aplicacion Web

.Net, Silverlight Add comments

No descubriríamos América si afirmásemos  que las aplicaciones Web  han dejado de ser  meras páginas Web con funcionalidad,  y se asemejan cada vez más a aplicaciones de escritorio. Para lograr este objetivo se ha mejorado mucho el tiempo que transcurre entre la acción del cliente y la respuesta del servidor, y esto no ha sido gracias la red de  Telefónica, sino mas bien a la optimización de la información que viaja desde la aplicación en el navegador y el servidor y viceversa – sirva de ejemplo, Ajax para solicitar información o javascript para validaciones en cliente.

Ahora entra en escena Silverlight. Una aplicación Web ASP.NET con Silverlight, está formada por dos aplicaciones distintas, uno que se ejecuta en el servidor y otro que se ejecuta en el cliente.  Pero aunque sean dos aplicaciones que se ejecutan en entornos distintos las dos forman una única aplicación, y por lo tanto debe de existir un flujo de comunicación entre ambas. Silverlight simplifica y optimiza operación que no necesita de la acción del servidor, así como la comunicación si fuese necesario.

En una primera aproximación, podemos compartir información entre ambos lados de la aplicación utilizando los parámetros en la URL y las cookies, pero esto conlleva un flujo de aplicación lineal, es decir: se ejecuta una parte de la aplicación y mediante postback  o redirección transferimos el control a la otra parte.

  • HtmlPage.Window.Navigate(): Redirecciona desde Silverlight hacia una página web.

  • HtmlPage.Document.Submit(): Si el  control Silverlight forma parte de un formulario, con este método se  genera un postback.

De esta forma conseguimos un intercambio de información pero no un canal abierto entre ambos entornos de ejecucion, ya que siempre que generemos un postback o una redirección el control Silverlight dejará de existir y por lo tanto no coexistirán los dos entornos a la vez. Como segunda opción podemos obstar por algunas de las siguientes opciones:

  • Usar Web Service desde Silverlight para ejecutar acciones en el servidor u obtener datos.

  • Mediante Javascript podremos ejecutar métodos declarados como públicos  en la aplicación Silverlight, como por ejemplo en respuesta a eventos de controles ASPX o HTML.

  • Usar ADO.NET Data Service para realizar operaciones de acceso a datos desde Silverlight.

URL y Cookies:

En Silverlight, mediante la clase HtmlPage.Document podemos obtener: un string con los parámetros que contiene la URL – HtmlPage.Document.QueryString; y una colección con las cookies – HtmlPage.Document.Cookies.  Desde la aplicación ASPX podemos añadir parámetros a la URL o añadir una nueva cookie  y  hacer una redirección  hacia un control Silverlight. Posteriormente la aplicación Silverlight puede recuperar esta información con los métodos comentados anteriormente.

Pero además desde nuestro control Silverlight podemos modificar o añadir Cookies, o añadir parámetros a la URL y realizar una redirección hacia una página ASPX.Decimos redirección como podríamos decir Submit() / Postback.

Web Services:

Tal vez es la primera opción para ejecutar acciones desde Silverlight en el servidor. Añadir un servicio web a nuestro aplicación ASP.Net / Silverlight con  Visual Studio  no es complicado. Para ellos añadimos un servicio web a nuestro proyecto Web, y a continuación añadimos a nuestro proyecto Siverlight una referencia Web hacia el servicio web creado.

Metodos [Scriptable]:

Podemos declarar métodos públicos en nuestro control Silverlight y añadirles el atributo [ScriptableMember], con lo que conseguiremos que el método pueda sea invocado desde una función Javascript, que por ejemplo responda al evento onClick() de un control HTML. Tambien tenemos que añadirle el atributo [ScriptableType] a la clase. Por ultimo tenemos que registrar un objeto en la pagina, al que posteriormente llamaremos mediante javascript. Veamos un Ejemplo:

JAVASCRIPT:
  1. function CambiarColor(obj){
  2.      var control = document.getElementById("Silverlight1");
  3.      control.content.AspSilverlight.silverlight_CambiarColor(obj.id);
  4. }

ADO.NET Data Services:

No hace mucho tiempo que se publicó ASP.NET 3.5 Extensions Preview, lo cual constituye una serie de mejoras sobre el framework 3.5.  Una de ellas es ADO.Net  Data Service, anteriormente conocido Proyecto Astoria.

Con ADO.NET Data Service se puede solicitar  y manipular datos mediante solicitudes HTTP.  Podemos configurar el formato en el que queremos consumir los datos, XML, JSON, o RDF.

2 Responses to “Comunicación Silverlight – Aplicacion Web”

  1. Miguel A. Says:

    Muy interesante el post. La comunicación en entornos web resulta siempre un tema a tener muy en cuenta, por las limitaciones propias de la tecnología así como por la eficiencia de las comunicaciones. Precisamente durante la lectura me surgía una duda, que ha quedado resuelta en la última línea de la entrada: el uso de otros protocolos más eficientes que XML, como JSON, que ahorra bastantes bytes de transmisión.

    Hace unos días refería en mi blog el uso de las extensiones para el Framework 3.5, aunque en una capa superior, implementando el patrón MVC en ASP.NET. Me pregunto sobre la potencia que daría el uso combinado de ambas herramientas (Silverlight y ASP.NET MVC). Según Microsoft, la idea es tender hacia lo que ya se consiguió, por ejemplo, con Ruby On Rails. ¿Qué opinas a este respecto?

  2. beCruz Says:

    Hola, me parece muy interesante este post y me gustaría saber si conoceis algún libro que me ayudase a realizar una aplicación con silverlight y .net. Muchas gracias.

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Acceder

Switch to our mobile site