Featured Posts

Silverlight 5 Ya DisponibleSilverlight 5 Ya Disponible El día de hoy 09 de Diciembre 2011 ha sido liberada la nueva versión de Silverlight 5.  Esta versión final es la 5.0.61118. ¿Qué es Silverlight? Silverlight es...

Readmore

Silverlight Tour–Actualizado a Silverlight 5 RTWSilverlight Tour–Actualizado a Silverlight 5... Tengo el gusto de anunciarles que el Curso que Da La Vuelta al Mundo, el famoso Silverlight Tour, ha sido actualizado a la versión final de Silverlight 5. El Silverlight...

Readmore

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)Nueva carrera en Microsoft Virtual Academy: Windows... Tengo el gusto de darles a conocer la disponibilidad de una nueva carrera en el Microsoft Virtual Academy (MVA): La carrera de Windows Phone 7.1 Mango. Esta es la descripción...

Readmore

Nueva carrera en Microsoft Virtual Academy: Silverlight 4Nueva carrera en Microsoft Virtual Academy: Silverlight... ¿Eres estudiante de Microsoft Virtual Academy (MVA)? Tengo el gusto de anunciarles oficialmente el lanzamiento de la nueva carrera de Silverlight 4 para esta plataforma educativa. La...

Readmore

Curso gratuito de Introducción a Silverlight 4 – 2da. ParteCurso gratuito de Introducción a Silverlight... Tengo el gusto de informarles que ya está disponible la segunda parte del Curso gratuito de Introducción a Silverlight 4 en Español, el cual ahora consta de un total...

Readmore

Rodrigo Díaz Concha Rss

¿Navajas o Llaves?

Posted on : 13-08-2011 | By : Rodrigo | In : General, Silverlight, Silverlight 5

Tags: , , ,

6

Permítanme presentarles a dos personas: él es una persona que se dedica a reparaciones automotrices, ella es ama de casa.  Ella, en sus labores cotidianas se encuentra a veces con la necesidad de hacer alguna reparación rápida, o el ajuste de algún aparato eléctrico en su hogar.  Él desmonta neumáticos y desarma motores en un taller mecánico.

Ella ha encontrado suficiente el tener esto a la mano en su hogar:

Swiss Army Knife

Él requiere este tipo de herramienta para realizar correctamente su trabajo:

Wrenches

¿Cuál de las dos personas aquí descritas tiene la mejor herramienta? 

La respuesta es: ambos.

Estas personas, han encontrado cuál herramienta es la mejor para sus necesidades reales.  Probablemente, si él utilizara la herramienta de ella, sería deficiente en sus tareas diarias y encontraría que no podría hacer todo lo que su trabajo –o su cliente- le exigen.  Y viceversa: ella probablemente encuentre que es un exceso el tener tanta herramienta si tan solo lo que ella necesita es apretar un tornillo, limar una astilla metálica o abrir una botella.

El escenario suena lógico ¿cierto?

Este escenario lo podríamos aplicar en una gran cantidad de casos, y en muchos de ellos probablemente estaríamos de acuerdo la mayoría de nosotros. Y la vida continuaría y seguiríamos pensando en otras cosas más importantes.

Sin embargo, esto no ha sido así con el tema de Silverlight v.s. HTML 5 (o HTML 5 v.s. .NET, o Flash v.s. HTML 5 o escribe aquí cualquier tema de discusión tecnológica: ________________), el cual ha sido hablado hasta el cansancio por una gran cantidad de personas -entendidas y no entendidas en el tema- y que ha llevado a la polarización de las opiniones, en un mundo en donde cualquier persona tiene voz y voto gracias a las redes sociales.  Esto no está mal realmente, pero es preocupante el leer opiniones tendenciosas que solicitan optar por blanco o negro.  Y esto realmente –creo- no debe ser así, ya que hay una gama infinita de grises enmedio de tan tajantes opciones.

HTML 5

Swiss Army KnifeHTML 5 es la quinta versión del estándar, el cual es el común denominador de todas la aplicaciones Web.  Además, prácticamente es visible a través de cualquier navegador en el planeta: Firefox, Chrome, Opera, Safari, IE, el navegador del Wii, el navegador del Xbox, el navegador del PlayStation, el de tu teléfono Motorola, en tu Nokia, en tu iPod, iPhone y iPad, en tu BlackBerry, etc.etc.  No cabe duda que esta es LA tecnología a escoger si tu objetivo es crear páginas/sitios Web, ya que seguramente querrás que tu sitio sea visible desde cualquier lado ¿no es así?  HTML 5 cuenta con muchas mejoras y nuevas funcionalidades para crear sitios altamente atractivos, dejando atrás la necesidad de instalar un plugin como Flash o como Silverlight, los cuales fueron creados para subsanar las lagunas de funcionalidad presentes en el estándar actual: HTML 4.01.  Estoy convencido que HTML sigue y seguirá siendo la “lingua franca” para todos los diseñadores y desarrolladores Web.

No obstante, HTML 5 aún no es implementado completamente por todos los navegadores.  Claro está, algún día todo navegador entenderá HTML 5 completamente, pero creo será un callejón sin salida ya que las empresas que crean los navegadores hacen una implementación única del estándar, por lo que el “estándar” probablemente quede en una paradoja interminable.  Seguirán existiendo las famosas páginas que dicen “Este sitio requiere _________ versión ___ o superior”.

Silverlight 5

Wrenches

Silverlight es una plataforma de desarrollo de Aplicaciones de Negocio, que utiliza el lenguaje XAML para la definición de sus Interfaces de Usuario (Vistas) y que incluye el Common Language Runtime (CLR) por lo que soporta los lenguajes de la plataforma .NET.  Está respaldado por extraordinarias herramientas como Visual Studio .NET y Expression Blend.

Silverlight 1.0 nació como “el reproductor de medios de Microsoft” y/o como “el competidor de Flash para la creación de animaciones”.  Hoy es día que estos estigmas siguen estando presentes en la percepción de muchas personas, medios e incluso empleados de Microsoft.

Posteriormente, con Silverlight 2, la promesa era algo así:

Silverlight en un inicio

Pero debido a la tracción que tuvo HTML 5 (excelente decisión) para ser la tecnología para la Web (y sumándole a que Apple decidió no soportar Flash y/o Silverlight en iOS) hubo un “cambio de estrategia” o como decimos en el medio el “BogMu-gate”.  Esta declaración ambigua y confusa (que no debe extrañar a nadie que conozca el medio informático) ayudó a oscurecer aún más la percepción que indiqué arriba.

Sin embargo, hace completamente sentido que Silverlight no se tome como un reemplazo de HTML –porque nunca ese ha sido su objetivo-, y además que se apoye completamente el estándar HTML 5 como lenguaje para la Web.  ¿Quién no quiere que su página o sitio se vea correctamente en cualquier dispositivo y navegador!? Hey, incluso aplicaciones Web también en algunos escenarios sería adecuado crearlos con HTML 5! (¿conoces SkyDrive?).  En un mundo en donde hay más dispositivos móviles que equipos de cómputo de escritorio, hace completamente sentido estandarizar la manera en la que se presenta la información.

Silverlight es una extraordinaria tecnología para la creación de Aplicaciones, principalmente de Negocios para el sistema operativo Windows y Mac OS.  Ese es su enfoque desde la versión 3.  Aplicaciones altamente funcionales, robustas y –con patrones de arquitectura adecuados- de fácil mantenimiento, flexibles, que aprovechen todo el poder de cómputo local y de la nube y que puedan ser construidos con herramientas y lenguajes modernos.  Aplicaciones que puedan ejecutar tal y como ejecutan las aplicaciones de escritorio hoy en día.

Personalmente, estoy involucrado en varios proyectos actualmente, en producción, que han sido bastante exitosos gracias a la plataforma de desarrollo de Silverlight, y que según su contexto no hacía sentido hacerlos con HTML 5 y que además, de hacerlo, se hubieran tardado mucho más tiempo del planeado.

¿Entonces?

¿Qué usar HTML o Silverlight?

¡Depende de qué necesites tú o tu cliente! ¿Funcionalidad? ¿Alcance? ¿Ambos? ¿En qué tecnologías tienes experiencia? ¿En cuáles lenguajes tienes experiencia?  Por ejemplo, si quieres hacer una página Web o sitio Web: no hay duda, HTML es y será el camino a seguir!  Para muestra, un botón: este blog usa WordPress, que está hecho con PHP y –para mí- es el mejor motor de blogging del mundo.  Punto.  Yo jamás construiría mi blog usando Silverlight o Flash, ya que resultaría contraproducente al no poder leerlo en, por ejemplo, el iPad 2.  Pero por otro lado, si mi cliente requiere una aplicación, altamente funcional, robusta, flexible, de fácil mantenimiento, reutilizando código existente de .NET… probablemente Silverlight será mi primera opción.

Recuerda, no hay solo blanco o negro, sino una gama infinita de grises.

Esto es para mí, el escenario actual:

HTML5 vs Silverlight

Obviamente, faltan en ese diagrama más tecnologías.  ¿En donde posicionarías tu tecnología favorita o la que más usas actualmente?

Según ______________, HTML 5 reemplazará Silverlight (y Flash, y .NET, y Java….)

No creo que eso suceda en muchos años por venir.  Te sugiero:

1. Cuestiona todo comentario impreso o verbal

2. Investiga y aprende.  Usa la tecnología.

3. Regresa al punto #1

Creo que la misma sentencia la podríamos formular: HTML 5 reemplazará a Objective-C/Cocoa/MonoTouch para la construcción de aplicaciones en iOS.  ¿Hace sentido esto?

Según ______________, a partir de Windows 8, todas las aplicaciones ahora serán construidas con HTML 5 y Javascript.

HTML 5 y Javascript serán una opción más para construir aplicaciones, según lo mencionado por Microsoft.

Microsoft es una empresa ENORME de tamaño, que está constituida a su vez, por “empresas” más chicas y todas ellas buscan sostenerse y justificar su existencia.  Algunos proyectos han fracasado, otros permanecen y permanecerán.  Otros se transformarán y evolucionarán.

Todo el futuro de la plataforma de Windows 8, será dada a conocer públicamente en durante el evento //Build/ que se llevará a cabo del 13 al 16 de Septiembre 2011.  La información está cerrada y hay voto de silencio hasta el evento.  ¿No podrás asistir al Build? No te preocupes, las sesiones estarán disponibles un día después (no sé si todas o solo el keynote).

Conclusiones

Usa la tecnología que más se adecúe a las necesidades de tu proyecto.  Todas tienen pros y contras; no existe la tecnología perfecta y tampoco solo blanco o negro.  Hay mucho qué aprender pero los días solo tienen 24 horas, da prioridad a lo que verdaderamente importa.

Salu2!!!!!!!!!!!!

Notas

La foto de la navaja suiza no es mía, la tomé de esta página.

La foto de las llaves no es mía, la tomé de esta página.

Silverlight 4 Beta – Control WebBrowser

Posted on : 23-11-2009 | By : Rodrigo | In : Silverlight 4

Tags: , ,

3

El control WebBrowser nos permite incluir contenido HTML dentro de nuestras aplicaciones de Silverlight Fuera del Navegador: una de las grandes características ausentes en la versión de Silverlight 3.  En este artículo veremos a detalle su funcionalidad y su modelo de programación presentes en Silverlight 4.

El proyecto

Iniciemos creando un nuevo proyecto de Silverlight 4 con Visual Studio 2010 Beta 2.  A este proyecto le pondremos el nombre de Demo.SL4.WebBrowser y aceptaremos las opciones por default de agregar un proyecto de Web para prueba.  A LayoutRoot en MainPage.xaml le agregaremos una instancia de WebBrowser, quedando el código de la siguiente manera:

<Grid x:Name="LayoutRoot" Background="White">
        <WebBrowser />
    </Grid>

Si ejecutamos la aplicación en este momento el resultado será el siguiente:

image

El control mostrará el mensaje “HTML is disabled” (HTML está deshabilitado).  Esto es debido a que el control WebBrowser está pensado para únicamente trabajar en aplicaciones Fuera del Navegador (por lo menos es así como trabaja en esta versión Beta de Silverlight 4).

El control WebBrowser únicamente funciona en Aplicaciones Fuera del Navegador.

Por lo anterior, configuraremos nuestra aplicación Silverlight para que pueda ejecutar Fuera del Navegador.  Esto lo logramos seleccionando la opción adecuada en las propiedades del proyecto:

image 

Además que agregaremos más Xaml que represente el resto de controles que usaremos en este ejemplo. 

Por otro lado debemos aclarar que el control WebBrowser únicamente puede mostrar contenido que está en el mismo dominio que la aplicación XAP (mismo subdominio, dominio, puerto y protocolo).  No obstante, podemos usar un elemento IFRAME para mostrar contenido que sea de otro dominio.

Desplegando contenido

Existen varios mecanismos para desplegar contenido en el control WebBrowser.

Método NavigateToString()

La manera más sencilla de mostrar contenido dentro del control WebBrowser es ejecutar su método NavigateToString() el cual recibe como parámetro una cadena que represente el HTML que deseamos mostrar (tal vez construido de manera manual, o sacado del XAP, o descargado de manera asíncrona con WebClient, etc.).  En nuestro ejemplo tendremos un método llamado CargarHtml() que genere una cadena de HTML y posteriormente que sirve como fuente para el WebBrowser.  El código será el siguiente:

void CargarHtml()
        {
            string html = "<html><h1>Demostración</h1><h2>Silverlight 4 Beta</h2><p>Esta es una demostración de cómo podemos mostrar contenido HTML usando el método NavigateToString()</p></html>";

            wb.NavigateToString(html);
        }

Y el resultado:

image

Método Navigate()

Otra manera de desplegar contenido HTML es establecer la propiedad Source del WebBrowser en XAML o usar el método Navigate(). En nuestro ejemplo agregaremos un nuevo archivo llamado Contenido.htm en el sitio de orígen de nuestra aplicación Silverlight (carpeta ClientBin por default). El archivo Contenido.htm tendrá el HTML que deseamos mostrar dentro del control WebBrowser.  Como comentamos anteriormente, si deseamos mostrar contenido que viene de otros dominios debemos mostrarlo dentro de un IFRAME.  Contenido.htm mostrará la página de búsqueda de Twitter dentro del control WebBrowser en nuestra aplicación Silverlight:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <iframe id="contenido" src="http://search.twitter.com" width="100%" height="600px" />
</body>
</html>

image

Comunicación entre WebBrowser y el contenido HTML

Podemos tener comunicación bi-direccional entre el control WebBrowser en Silverlight y la página o contenido que está mostrando.

Método InvokeScript()

El método InvokeScript() permite la invocación de una función declarada en la página que haya cargado el control WebBrowser.  A nuestra página Contenido.htm le agregaremos una función de búsqueda sobre el sitio de Twitter.  Para esto agregaremos algunos controles en nuestra aplicación: un TextBox para que el usuario pueda escribir la cadena deseada y un Button para ejecutar efectivamente el método InvokeScript().

<script type="text/javascript">
    function buscar(cadena) {
        var url = "http://search.twitter.com/search?q=" + cadena;
        document.getElementById("contenido").src = url;
    }
</script>

y el resultado:

image

window.external.Notify()

La función Notify() estará disponible en el objeto window.external cuando usemos WebBrowser.  Su objetivo es mandar mensajes al control, y cuando eso sucede, se disparará el evento ScriptNotify.   En los argumentos de este evento encontraremos la propiedad Value que representa el valor establecido como parámetro en window.external.Notify().  En este ejemplo invocaremos window.external.Notify en el evento body.onload() para enviar como cadena “Silverlight” al WebBrowser. El evento ScriptNotify se disparará y es en donde obtendremos la cadena que posteriormente pondremos en el TextBox.

wb.ScriptNotify += (s, a) =>
            {
                txtCadena.Text = a.Value;
            };

 

Evento LoadCompleted

El control WebBrowser expone el evento LoadCompleted el cual se disparará cuando el contenido efectivamente haya finalizado en cargarse por primera vez, es decir, cuando el método Navigate() haya ejecutado o cuando se establece la propiedad Source.  En nuestro ejemplo lo utilizaremos para crear una notificación (característica nueva en Silverlight 4) para avisarle al usuario que la carga de la página ha finalizado.

image

Resumen

El control WebBrowser nos permite cargar contenido HTML dentro de las Aplicaciones Fuera del Navegador.  El contenido a cargar deberá estar en el mismo dominio que la aplicación, no obstante si deseamos hospedar contenido HTML de otros dominios deberemos usar un elemento IFRAME.  Asimismo, el control permite interacción con las funciones de script presentes en el contenido y viceversa; siendo de esta manera una excelente opción para la construcción de poderosas aplicaciones que requieran interactuar con HTML.

Puedes descargar el código aquí

Puedes ver el demo en vivo aquí (requiere Silverlight 4)