# Microsoft Silverlight

Microsoft Silverlight era una estructura para aplicaciones web que agrega nuevas funciones multimedia como la reproducción de vídeos, gráficos vectoriales, animaciones e interactividad, en forma similar a lo que hace Adobe Flash.
Silverlight competía con Adobe Flex, JavaFX, OpenLaszlo y algunas presentaciones de componentes AJAX. La primera versión de Silverlight fue lanzada en septiembre de 2007 y su última versión 5.1 fue lanzada en enero de 2017 y aún sigue distribuyéndose de forma gratuita.
Además se lanzó una versión en conjunto con Novell de Silverlight llamada Moonlight, la cual es código abierto para los sistemas operativos basados en UNIX. En mayo de 2012, Moonlight fue abandonado debido a la falta de popularidad de Silverlight.
El navegador de Microsoft, Microsoft Edge no soporta esta tecnología, por lo que se recomienda evitar su uso.

## Descripción

Conserva un modo de gráficos de sistema, similar al del WPF e integra en un solo complemento multimedia, gráficos de computador, animaciones e interactividad. La base de su programación es XAML y el acceso a los objetos está dado por C# y Visual Basic (aunque la versión 1.0 trabajaba a partir de JavaScript). El XAML puede ser usado para marcar los gráficos vectoriales y las animaciones.
Microsoft Expression Blend es la herramienta de Microsoft que se utiliza para crear las animaciones en Silverlight.
Silverlight soporta playback del formato de video VC-1 en todos los navegadores compatibles sin requerir el control ActiveX del Reproductor de Windows Media. Sin embargo, la EULA dice que la licencia del VC-1 es "sólo para uso personal y no-comercial de un consumidor". El contenido creado con Silverlight sería más "buscable" e "indexable" que aquel que fue creado con Adobe Flash por no estar compilado, pues se representa como un texto XAML.
Con Silverlight es posible cargar dinámicamente un contenido XML que puede ser manipulado a través de una interfaz DOM, una técnica que es compatible con aquellas convencionales del lenguaje AJAX. Silverlight tiene un "Downloader" (descargador) para tomar scripts u otros medios y guardarlos en el equipo, cuando es requerido por la aplicación. También soporta lenguajes dinámicos de programación como Ruby y Python.

## Controversia sobre el código abierto

Un informe anónimo afirmó que Microsoft publicaría ciertas partes como código abierto, pero Sam Ramji, director de estrategia de tecnología de la plataforma de Microsoft, dijo que la compañía no planea hacer eso. Sin embargo, porciones de la Rutina del Lenguaje Dinámico (Dynamic Language Runtime), incluido con Silverlight, se han puesto a disposición a través del sitio web CodePlex de Microsoft bajo la Licencia Permisiva de Microsoft (Microsoft Permissive License).

## Compatibilidad

| Sistema Operativo | IE 6 SP2 | IE 7 y 8 | Firefox 1.5 | Firefox 2.0, 3.0 y 3.5 | Safari | Opera | Chrome |
| Windows Vista/7 | - | 1.0, 1.1, 2.0, 3.5, 4.0 | 1.0, 1.1, 2.0 | 1.0, 1.1, 2.0, 3.5, 4.0 | 1.0, 2.0; vía NPAPI | 2.0 | 2.0, 3.0, 4.0 |
| Windows Server 2003 | 1.0, 2.0, 3.0, 4.0 | 1.0, 1.1, 2.0,3.5 | 1.0, 1.1, 2.0 | 1.0, 1.1, 2.0, 3.5 (Solamente versión 3.5) | 1.0, 2.0; vía NPAPI | 2.0 | 2.0, 3.0, 4.0 |
| Windows XP | 1.0, 2.0, 3.0, 4.0 | 1.0, 1.1, 2.0, 3.0, 4.0 | 1.0, 1.1, 2.0 | 1.0, 1.1, 2.0, 3.5, 4.0 | 1.0, 2.0; vía NPAPI | 2.0 | 2.0, 3.0, 4.0 |
| Windows Phone 7 | - | Más adelante | - | - | - | - | - |
| Windows 2000 | 2.0, 3.0,4.0 | - | - | 2.0 (No oficial) | 2.0 (vía NPAPI) | - | - |
| Mac OS 10.4.8+ PPC | - | - | 1.0 | 1.0 | 1.0 | Más adelante | ? |
| Mac OS 10.4.8+ Intel | - | - | 1.0, 1.1, 2.0 | 1.0, 1.1, 2.0 | 1.0, 1.1, 2.0, 4.0 | 2.0 | 3.0, 4.0; No oficial |
| Linux | - | - | Moonlight y 2.0 | Moonlight y 2.0 | Moonlight y 2.0 | 2.0 | ? |
Notas:
* Opera era soportado desde la versión 2.0
* En Linux, los navegadores Firefox, Konqueror y Opera eran soportados desde la 2.0
* Soporte para los distribuciones más importantes de Linux a través de una implementación de Silverlight, llamada Moonlight«Silverlight 1.0 Released and Silverlight for Linux Announced». Consultado el 5 de septiembre de 2007.
* Se planeaba dar soporte a dispositivos móviles en el futuro, de acuerdo con Scott Guthrie.
* Se ha considerado dar soporte a otras plataformas.

## Versiones

| Nombre de la versión | Número de la versión | Fecha |
| 1.0 Community Technology Preview (CTP) | 1.0.? | Diciembre de 2006 |
| 1.0 Release to Web (RTW) | 1.0.20816 | 5 de septiembre de 2007 |
| 2 Pre-Release (As 1.1 Alpha Refresh) | 1.1.20926.0 | 5 de septiembre de 2007 |
| 1.0 Service release | 1.0.21115.0 | 20 de noviembre de 2007 |
| 1.0 Service release | 1.0.30109.0 | 15 de enero de 2008 |
| 2 Beta 1 | 2.0.30226.2 | 3 de mayo de 2008 |
| 1.0 Service release | 1.0.30401.0 | 8 de abril de 2008 |
| 2 Beta 2 | 2.0.30523.6 | 6 de junio de 2008 |
| 2 Beta 2 | 2.0.30523.8 | 16 de julio de 2008 |
| 1.0 Service release | 1.0.30715.0 | 27 de julio de 2008 |
| 2 Release Candidate Zero (RC0) | 2.0.30523.9 | 25 de septiembre de 2008 |
| 2 RTW | 2.0.31005.0 | 24 de octubre de 2008 |
| 2 General Distribution Release (GDR) 1 | 2.0.40115.0 | 19 de febrero de 2009 |
| 3 Beta | 3.0.40307.0 | 18 de marzo de 2009 |
| 3 RTW | 3.0.40624.0 | 9 de julio de 2009 |
| 3 GDR 1 | 3.0.40723.0 | 28 de julio de 2009 |
| 3 GDR 2 | 3.0.40818.0 | 1 de septiembre de 2009 |
| 4 Beta 1 | 4.0.41108.0 | 18 de noviembre de 2009 |
| 3 GDR 3 | 3.0.50106.0 | 20 de enero de 2010 |
| 4 RC | 4.0.50303.0 | 15 de marzo de 2010 |
| 4 GDR | 4.0.50401.0 | 15 de abril de 2010 |
| 4 GDR 2 | 4.0.50917.0 | 28 de septiembre de 2010 |

### Silverlight 1.0

Silverlight 1.0 consiste en la presentación del núcleo de un framework, el cual es responsable de la interactividad y el ingreso de datos por parte del usuario, los gráficos, animación, la reproducción de medios, el soporte a la administración de derechos digitales y la integración del DOM. Sus componentes son los siguientes:
* Input - Maneja la información que aportan los dispositivos de entrada como los teclados, el ratón, el stylus, etc.
* Núcleo UI - Maneja el rendimiento de las imágenes bitmap (incluyendo las imágenes raster como JPEG, los gráficos vectoriales, el texto y las animaciones).
* Media - Reproducción en línea de MP3, Windows Media y VC-1.
* XAML - Permite que la disposición de UI sea creada usando el lenguaje de marcas XAML.
Una aplicación de Silverlight comienza por invocar el control de Silverlight mediante una la página HTML, para generar dicha página (en lo que a estructura se refiere), usa el archivo XAML. El archivo XAML puede contener múltiples objetos, pero normalmente el objeto padre suele ser del tipo Canvas, el cual actúa como contenedor de otros elementos. Silverlight ofrece la posibilidad de usar símbolos geométricos básicos como: líneas, elipses, elementos de texto, imágenes y multimedia. Los elementos están propiamente posicionados para alcanzar la disposición deseada. Cualquier figura arbitraria puede ser creada si es requerida. Estos elementos pueden ser animados usando el reproductor de eventos; algunos efectos de animaciones están predeterminadas, mientras que otros puede ser compuestos de otros efectos pre-definidos. Eventos como el movimiento del teclado o del ratón pueden ser manejados por scripts personalizados o manejadores de eventos.
La manipulación programática del UI se obtiene al usar lenguajes de scripts para modificar el DOC del objeto Canvas del Silverlight. Para facilitar esto, Silverlight muestra una API DOM, accesible desde cualquier lenguaje de scripts soportado por Silverlight, el cual en cada versión está limitada solo a ejecutarse en cualquier nevegador. Sin embargo, no hay widgets UI construidas. Las widgets nativas del navegador deben ser sobredestinadas en la cina del objeto Canvas del Silverlight para que el usuario pueda ingresar información. Soporte para formatos de datos está limitado a XML, POX y JSON.

### Silverlight 2.0

* Esta versión incluye notables mejoras en compatibilidad como la adición de actualizaciones automáticas, compatibilidad con Firefox 3.5, Opera, Chrome y Safari 4 y compatibilidad con el sistema operativo Linux.
* Para Linux, existe el plugin Moonlight 2.0.

### Silverlight 3.0

* OutBrowser: Extracción de la aplicación silverlight del entorno de web al escritorio.
* Para entornos linux, esta el plugin de Moonlight 3.0, aunque la versión 2.0 es casi funcional.
* También para entornos microsoft.

### Silverlight 4.0

El 18 de noviembre de 2009 en la Conferencia de Desarrolladores Profesionales celebrada en Los Ángeles, Microsoft mostró al público Silverlight 4, una versión que finalmente se lanzó el 15 de abril de 2010. Entre las nuevas características para el lanzamiento se destacan:
* Mejoras en la RIA: paradigmas de Business y WFC RIA
* Soporte para WebCam y Micrófono
* Soporte para impresión
* Mejorado el soporte del click derecho y el desplazamiento con la rueda del ratón
* Soporte Google Chrome
* Nuevas notificaciones
* Mejoras en las cajas de texto enriquecido
* Mejoradas las animaciones
* Soporte para arrastar y soltar
* Mejoras en el rendimiento del zum
* Soporte para usar temas en los controles
* Soporte para renderizar HTML dentro de Silverlight
* Protección del contenido en H.264 y soporte para reproducción offline de contenido con DRM.

### Silverlight 5.0

El 2 de diciembre de 2010, en el Silverlight Firestarter, se presentó Silverlight 5 que salió a la luz en la primera mitad del 2011. Mientras que la versión final de Microsoft Silverlight fue lanzado a finales de 2011 Las nuevas características de Silverlight 5 incluyen:
* Soporte de aceleración de vídeo por GPU.
* Soporte de gráficos en 3D.
* Reproducción de contenido multimedia con velocidad variable y corrección automática del audio.
* Mejora de consumo de energía.
* Soporte para control remoto.
* Inicio más rápido de las aplicaciones.
* Soporte para navegadores de 64 bits.
* Soporte para pruebas automatizadas de interfaz de usuario para las aplicaciones en Visual Studio 2010.
* Mejora en la claridad del texto.
* Ahora los desarrolladores pueden depurar las expresiones de enlaces a datos (data-binding) usando puntos de interrupción (breakpoints).

## Disponibilidad

Silverlight está disponible para los navegadores Internet Explorer y Safari en los sistemas operativos Microsoft Windows, Mac OS X y Linux.
El lanzamiento mundial de la versión 1.0 de Silverlight fue realizado el 6 de septiembre de 2007.

## Alternativas

Para aquellas personas que tengan Linux y que deseen utilizar una variante oficial y libre, desarrollada por el Proyecto Mono, el proyecto Moonlight es una buena opción.
* Enero 2010: Versión 2.0 de moonlight para firefox en linux. estable web
* Abril 2010: Versión 3.0 de moonlight para firefox en linux. preview web

## Relación con los estándares actuales de Internet

De acuerdo con el organismo internacional sin fines de lucro, el Comité Internacional Europeo para la Interoperación entre Sistemas ("European Committee for Interoperable Systems") existe cierta preocupación de que con Silverlight Microsoft trata de introducir contenido en la red al que sólo se podría acceder desde la plataforma Windows. Argumentan que el uso de XAML en Silverlight se coloca para reemplazar al estándar HTML que es multi-plataforma. Efectivamente, si Silverlight llega a ser usado de forma amplia por mucha gente, existe el riesgo de que los usuarios tengan que llegar a comprar productos de Microsoft para poder acceder al contenido de internet.
En los EE. UU., California y algunos otros estados han pedido a un juez de distrito que extienda la mayoría de los acuerdos con Microsoft (de los casos antimonopolios) por otros cinco años, citando " ciertas preocupaciones, incluyendo el temor de que Microsoft pudiera usar la siguiente versión de Windows para 'inclinar el campo de juego' hacia Silverlight, su nuevo competidor contra el Adobe Flash", dice un artículo del periódico 'Seattle Post-Intelligencer'. La resolución final de esa solicitud judicial fue el extender el acuerdo dos años, hasta noviembre del 2009, pero por razones no relacionadas con Silverlight.
Se ha criticado a Microsoft por no usar el estándar SVG (Scalable Vector Graphics) para Silverlight, lo cual, de acuerdo con Ryan Paul del sitio web 'Ars Technica', es consistente con la práctica de Microsoft de ignorar los estándares abiertos, como lo ha hecho en otros de sus productos.