Silverlight es una tecnología agnóstica tanto del lado del Cliente como del lado del Servidor, esto es, las aplicaciones de Silverlight pueden ser hospedadas en prácticamente cualquier tecnología Web del lado del Servidor (asp, jsp, php, cgi…) y pueden las aplicaciones Silverlight ejecutarse en la mayoría de los Navegadores modernos hoy en día (Firefox, Internet Explorer, Safari, Chrome…) en la mayoría de los Sistemas Operativos (Windows [2000,XP, Vista, 2003, 2008, 7…], Mac OSX y Linux [por medio del proyecto Moonlight creado por Novell]).  Es muy importante hacer notar lo anterior ya que hoy día aún existe mucha confusión acerca de Silverlight como plataforma para construir aplicaciones RIA.

Silverlight es una tecnología multi-Plataforma y multi-Navegador.

En este artículo veremos cómo podemos hospedar nuestras aplicaciones Silverlight en PHP e incluso cómo inicializar correctamente las aplicaciones por medio de parámetros creados del lado del Servidor con esta tecnología.

Instalando PHP sobre IIS (usuarios de Windows)

Una manera sencilla para ejecutar aplicaciones PHP sobre Windows es utilizar Web Platform Installer, la cual es una herramienta que nos permite instalar fácil y rápidamente plataformas o aplicativos completos en nuestros equipos locales.  En otros Sistemas Operativos la manera de ejecutar y hospedar aplicaciones PHP varía y está fuera de alcance de este artículo.  La siguiente figura muestra Web Platform Installer una vez instalado PHP:


Creando la aplicación de prueba

Crearemos una aplicación Silverlight 3 llamada SLPHP y aceptaremos la creación del sitio Web ASP.NET de prueba.  Esto es simplemente por conveniencia ya que la plantilla de Visual Studio creará el archivo SLPHPTestpage.html el cual cambiaremos su extensión a PHP.  Además de lo anterior agregaremos un elemento de tipo TextBlock en MainPage.xaml para poder apreciar que la aplicación hay sido cargada correctamente en la página (y no veamos la pantalla de color blanco únicamente)./

Tal cual, la página PHP está lista para utilizarse ya que estamos reutilizando todo el contenido de HTML que se ha generado para nosotros, no obstante primero tenemos que publicar nuestra aplicación en un Sitio Web en IIS para que el archivo .php sea identificado como tal.  Lo primero que necesitamos hacer es crear el Sitio Web en IIS (en mi ejemplo, físicamente en D:\SLPHP y en el puerto 9000).

Una vez con el Sitio Web creado, publicamos la aplicación desde Visual Studio .NET al fólder físico en donde está montado.

Al ver este Sitio Web en el navegador podemos darnos cuenta que efectivamente la aplicación es ejecutada en la página .php de manera correcta.  La siguiente figura muestra la aplicación de Silverlight 3 ejecutándose en la página PHP:


Inicializando Parámetros de la aplicación desde PHP

Como ya habíamos comentado y demostrado antes, es posible mandar valores de inicialización en las aplicaciones de Silverlight a través del parámetro InitParams del elemento <object>.  Esto nos permite establecer datos que sean necesarios para la aplicación Silverlight.  Hacer esto con PHP es sencillo si utilizamos la directiva <?php …. ?> justo en el sitio donde establecemos InitParams.  El siguiente fragmento de código muestra cómo se establecen dos parámetros llamados n y p los cuales tendrán el valor de lo que se envíe a través del Querystring:

<param name="initParams" value=<?php echo "'n=" . $_GET["n"] . ",p=" . $_GET["p"] . "'" ?> />
 

Finalmente, podemos utilizar el valor que traen dichos parámetros dentro de la aplicación de Silverlight si los leemos en el evento Startup:

private void Application_Startup(object sender, StartupEventArgs e)
{
    string n = string.Empty;
    string p = string.Empty;
 
    if (e.InitParams["n"] != null)
        n = e.InitParams["n"];
    if (e.InitParams["p"] != null)
        p = e.InitParams["p"];
 
    this.RootVisual = new MainPage(n, p);
}

De esta manera, además de estar hospedando la aplicación de Silverlight en la página de PHP, estamos estableciendo algunos parámetros iniciales del lado del Servidor.

En próximos artículos veremos un poco más acerca de cómo integrar Silverlight con PHP.