SilverLight

El pasado Lunes presente una de las keynotes en las conferencias MIX en Las Vegas, y presentamos un nuevo proyecto en el que he estado trabajando el último año: Silverlight

Silverlight es un plugin .NET multiplataforma (cross platform) y multi navegador (cross browser) que permite a los desarrolladores y diseñadores construir RIA’s para navegadores. La build que se lanzará esta semana soporta Firefox, Safari e Internet Explorer, tanto para Mac como para Windows.

Para haceros una idea de qué clase de aplicaciones podemos hacer con Silverlight, echadle un vistazo a este video de siete minutos de la aplicación de ejemplo «Top Banana»:

Esta aplicación fue hecha con C# y se ejecuta en cualquier sistema que tenga Silverlight isntalado. El tamaño de la descarga total de la aplicación (con todo los archivos XAML y el código compilado) es de 50Kb aproximadamente. Pondremos una versión con el código fuente disponible más tarde este verano.

Mi presentación

Podéis ver mi presentación completa aquí. (Nota: por ahora el video solo muestra las slides y las demos; actualizarán el video a una versión más completa en unas semanas).

Fui muy afortunado al encontrarme con algunos compañeros que me querían enseñar las cosas que habían hecho con Silverlight. Incluían: Netflix (un servicio de videos bajo demanda), CBS (soporte para video generados por el usuario), Metaliq (el video de más arriba) y MLB.com (donde podemos ver la nueva experiencia de usuario del nuevo Major League Baseball).

En la presentación también vismo como podeis usar los nuevos productos de Expression Studio (Design, Blend y el Media Encoder) para hacer videos interactivos. También hice algunas demos de desarrollo – incluyendo unas que mostraban cómo construir un nuevo proyecto SilverLight con Visual Studio, usando el nuevo soporte para Ruby en .NET para que fuese creando la aplicación Silverlight iterativamente con un lenguaje dinámico de consola (que fue hecha completamente con IronPython con Silverlight ejecutandose en Savari en Mac)

Silverlight 1.0

Vamos a tener la primera release de Silverlight este verano. Está centrada en permitir escenarios ricos de contenido multimedia, y ocupará unos 1.2 MB. Algunas de las características que tendrá:

  • Codec intetgrado para reproducir VC-1 y videos WMV, y MP3 y WMA en el navegador. El codec VC-1 en particular es un gran paso para incorporar multimedia a la experiencia web – desde que soporta la reproducción de video de alta calidad de hasta 720p (alta definición). Es el mismo formato soportado en los resproductores HD-DVD y Blueray DVD, y además está soportado por miles de millones de dispositivos móviles, XBOX 360, Windows Media Centers, y Windows Media Players (permitiendo a cualquiera codificar una vez y reproducirlo en todos esos dispositivos + Silverlight).  Esto nos permite usar una libreria inmensa ya existente de contenidos de video y herramientas de edición muy ricas para generar contenidos visuales con Silverlight.
  • Silverlight soporta la abilidad de descargar progresivamente y reproducir contenido multimedia de cualquier servidor web. Podemos indicarle a Silverlight una URL que contenga contenido audio/video,  se lo descargará y nos permitirá reproducirlo en el navegador. No hace falta ningun software serivdor de ningun tipo, Silverlight puede trabajar con cualquier servidor web (Apache en Linux incluido). También estamos trabajando en un conjunto de módulos para IIS que permitan el control óptimo de contenidos multimedia y optimización del ancho de banda para vuestros servidores web.
  • Silverlight también soporta opcionalmente streaming. Esto nos permite usar un servidor de streaming como el Windows Media Server para streaming de video y audio (Nota: Windows Media Server es un producto gratuito que corre en Windows Server). El streaming tiene los siguientes beneficios: 1)Mejoran la expriencia del usuario final cuando buscan sobre un video amplio, y 2) puede disminuir dramáticamente el coste del ancho de banda ( la mayoría de usuarios no ven los videos completos – así que podemos liberar el ancho de banda si dejan de navegar antes de que termine el video con una descarga progresiva).
  • Silverlight permite construir interfaces de usuario ricas y animaciones, y mezclar gráficos vectoriales con HTML. Soporta un modelo de programación para Javascript para esto. Un beneficio de esto es que hace realmente facil integrar estas experiencias con páginas web AJAX (podemos escribir código Javascript para actualizar tanto HTML como elementos XAML).
  • Silverlight hace fácil poder crear ricas experiencias con videos interactivos. Podemos mezclar las capacidades mutlimedia con el soporte de gráficos vectoriales para crear la experiencia multimedia que queramos. Silverlight tiene la habilidad de ponerse en pantalla completa para crear experiencias completamente únicas, así como poder hacer overlay sobre menús, contenidos, controles, textos, directamente encima del contenido de video (lo que nos permite tener experiencias como en los DVD). Silverlight también nos permite ajustar el tamaño de los videos en reproducción al vuelo, sin requerir que el streamin de video se pare o se reinicie.

Podemos desarrollar aplicaciones con Silverlight usando cualquier editor de texto estándar (no hace falta ninguna herramienta). Microsoft ofrecerá soporte para herramientas para Silverlight 1.0 con nuestra suite de productos Expression Studio (incluyendo soporte para herramientas para la administración de encoding de video y audio). Podéis descargar las CTP de Expression Blend y Expression Media Encoder que soportan Silverlight aquí.

Os recomiendo también que veáis estas sesiones del MIX que cubren Silverlight 1.0 y escenarios multimedia (en inglés).

 Silverlight 1.1

En el MIX pusimos la versión beta de Silverlight 1.0 (que tendrá una versión final este verano) y una versión alpha de Silverlight 1.1

Silverlight 1.1 incluye una version multiplataforma del framework de .NET, lo que permitirá una gran experiencia de desarrollo con .NET en los navegadores. El tamaño total de la descarga de Silverlight 1.1 (incluyendo todas las características del 1.0 + CLR + una librería WPF y un subconjunto de la librería FX + soporte para lenguajes dinámicos) será de unos 4MB – y dura poco más de 20 segundos en la instalación.

Algunas de las características que incluye Silverlight 1.1 son:

  • Un motor incrustado del CLR que aporta un rendimiento increíble en la ejecución en el entorno de los navegadores. Silverlight usa el mismo núcleo del motor CLR disponible con la versión completa de .NET. Proporciona el mimo sistema de tipos, recolector de basura, y la generación de código JIT que el vuestros códigos en .NET usan hoy. Esto significa que podemos escribir código .NET que podemos ejecutar con Silverlight, ASP .NET y WinForms/WPF. También significa que podemos ejecutar código en el navegador que se ejecuta 250 veces más rapido que el javascript interpretado.
  • Silverlight incluye un gran framework de librearías que podéis usar para desarrollar apliaciónes basadas en el navegador. Este framework es un subconjunto de todo el framework de .NET que usais hoy en día, y os permite reusar de forma fácil vuestrar habilidades y conocimientos. Incluye soporte para colecciones, genéricos, IO, threading, globalization, networking, y LINQ.
  • Silverlight soporta el modelo de programación de interfaces de WPF. La alpha de Silverlight 1.1 os permite programar buestrar interfaces con código manegado/event handlers, y tiene la habilidad de encapsular controles de interfaz de usuario (construidos con cualquier lenguaje manejado de .NET). La primera version alpha  no trae un conjunto de contorles de interfaz de usuario aún — hemos estado ocupados trabajando en el nucleo de la interfaz de usuario. No os preocupéis, un gran conjunto de controles de alto nivel serán incluidos en el futuro (mientras tanto podéis descargaros algunos controles de ejemplo aquí). WPF para Silverlight será entregado con soporte para el nucleo de constructores de WPF como los layout managers y data-binding (estas características no están implementadas aún en la alpha actual, pero están llegando).
  • Silverlight aporta una api manegada HTML DOM API que os permite programar el HTML de un navegador usando cualquier lenguaje .NET (esto significa que podéis lanzar un evento a un boton HTML usando C# o VB). Silverlight tiene también la habilidad de tener código Javascript en una llamada HTML con métodos .NET que exponéis desde vuestro control/aplicación Silverlight. Silverlight incluye un serializador JSON que  permite una transformación automática desde tipos de .NET hasta/desde Javascript (podeis tener Javascript estándar que llama a un método en C# con Silverlight, y que el método devuelva una colección de .NET que será entonces serializada por Silverlight en una colección Javascript para vuestro navegador).
  • Silverlight no precisa de ASP .NET para sr usado en el servidor web de backend (eso significa que podeis usar Silverlight con PHP e Linux, si queréis). Sin embargo, hemos añadido algunas características que os permitirá integrar fácilmente Silverlight en los clientes y servidores de ASP .NET. Silverlight puede usar los servicios de aplicación estándar de ASP .NET (membership, roles, profile, etc), y pueden llamar tanto a servicios web WCF o ASMX. Esta semana también publicamos nuevos controles de servidor ASP.NET que hacen realmente fácil hostear controles Silverlight en páginas ASP.NET.
  • Abajo tenéis un video de 22 minutos que muestra cómo construir una aplicación Silverlight desde cero usando Visual Studio y Expression Blend (haced clic aquí para descargaros los controles que uso.

<

Podéis hacer clic en la siguiente imagen para descargaros un poster que os muestra una visión global de los namespaces de .NET y las características que ofrece la alpha de Silverlight 1.1.

También me hicieron una entrevista en Channel 9 que podéis ver para aprender un poco más sobre cómo el modelo de programación manejado trabaja con Silverlight, y cómo le añadimos el soporte para el CLR

Acualización del 10 de mayo: También hice un podcast con Scott Hanselman que podeis descargaros y escuchar aquí.

También os recomiendo que veais estas sesiones del MIX sobre los diferentes escenarios sobre Silverlight 1.1 y .NET.

  • Building Silverlight Applications using .NET (Part 1)
  • Building Silverlight Applications using .NET (Part 2) 
  • Extending the Browser Programming Model with Silverlight
  • Podéis descargaros el código fuente de las partes 1 y 2 en el sitio de Nick aquí.

    Soporte de lenguajes dinámicos.

    En el MIX anunciamos la primera releasede una nueva librería .NET a la que llamamos «Dynamic Language Runtime» (a partir de ahora DLR).

    Hemos investigado durante mucho tiempo haciendo que .NET y el CLR sean un entorno de primera clase para lenguajes dinámicos, y hace poco más de un año formamos un group dedicado dentro de mi equipo y ha estado centrado en construir un mejor soporte para lenguajes dinámicos en el CLR.

    El nuevo Dynamic Language Runtime (DLR) añade un pequeño conjunto de sevicios específicamente diseñados para el CLR para escenarios con lenguajes dinámicos. Entre otras cosas hay un sistema de tipos dinámicos compartidos, modelo de hosting de lenguajes y soporte para hacer más facil la generación rápida de código dinámico. Con estas nuevas características es muchísimo más facil implementar lenguajes dinámicos para .NET.

    La importancia de las implementaciones de lenguajes dinámicos que usan el soporte DLR es que no son interpretados. En lugar de eso, hemos usado las características de generación de código ligero (lightweight-code-generation) que se añadieron en el CLR 2.0 para crear código IL en memoria que será compilado con JIT en código nativo en tiempo de ejecución (sin tener que guardar nunca nada en disco). De esta forma se puede obtener mucho más rendimiento que un código interpretado, y también nos aseguramos de que cuando se termina la compilación JIT podemos opcionalmente usar el recolector de basura para eliminar la latencia. Pudiendo de esta forma coneguir un entorno muy potente para la programación con lenguajes dinámicos, y permitiendo a los desarrolladores programar contra las API’s de .NET con lenguajes dinámicos.

    El DLR – y todos los lenguajes construidos sobre él – se puede usar en aplicaciones multiplataforma con Silverlight en navegadores, aplicaciones en servidor ASP .NET, y con WPF/WinForms en entornos de escritorio (basicamente en cualquier lugar donde se pueda ejecutar el CLR).

    En el MIX hemos anunciado que Microsoft aportará cuatro implementaciones de lenguajes dinámicos para .NET.

    • Python
    • Ruby (new)
    • Javascript
    • Dynamic VB (new)

    Publicaremos el código fuente de las implementaciones de Python y Ruby, así como el código de la librería DLr en CodePlex (todos los códigos serán publicados con todos los derechos para la publicación). Podéis descargaros el tanto el DLR como la implementación de Python (conocida como IronPython) hoy mismo en el sitio de IronPython de CodePlex. El código de la implementación de Ruby (que vamos a llamar IronRuby) también será publicado en CodePlex en unas semanas.

    Para aprender más sobre nuestro soporte para lenguajes dinámicos, os recomiendo que veáis este video de John Lam mostrando una consola de lenguajes dinámicos creada con IronPython corriendo en Silverlight en un Mac. Permite a los desarrolladores crear interactivamente aplicaciones Silverlight (con soporte para intellisense y todo) en el navegador usando Ruby, Python, Javascript y VB:

    También os recomiendo que veáis esta sesion del MIX sobre Silverlight 1.1 con lenguajes dinámicos.

    www.Silverlight.net

    La semana pasada lancamos nuestro último sitio: http://www.silverlight.net

    Como con www.asp.net y www.iis.net, usaremos este sitio para publicar ejemplos y videos de «How-to». También tiene una parte de foros para que nos hagáis preguntas sobre Silverlight.

    Haz clic aquí para suscribirte al RSS de los nuevos contenidos que iremos publicando en las semanas y meses venideros.

    Resumen.

    Silverlight abre un montón de nuevos horizontes donde crear increibles experiencias de usuario multiplataforma y multinavegador.

    Para los desarrolladores de .NET, significa poder escribir código .NET usando cualquier lenguaje de desarrllo (VB, C#, Javascript, Python, Ruby y más) en el navegador (usando Silverlight), servidores web (usando ASP.NET), en aplicaciones de escritorio, y para dispositivos móviles. Seréis capaces de usar Visual Studio y la suite de Expression Studio para llegar a todos esos escenarios.

    Debo decir, que me apasiona el futuro que ofrece Silverlight. Aún tenemos trabajo que hacer, errores que corregir, añadir controles de usuario – pero el núcleo de gráficos/media/runtime que hemos publicado es extremadamente potente y proporciona una base muy sólida y escalable con la que serguir trabajando.

    Escribiré aún más sobre Silverlight, y cómo usarlo, en las próximas semanas y meses.

    Espero que sirva.

    Scott.

    Traducido por: Juan María Laó Ramos. Microsoft Student Partner.

    0 comentarios sobre “SilverLight”

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *