Featured Posts

Diplomado de desarrollo de aplicaciones para Windows Phone 7.1–LatinoaméricaDiplomado de desarrollo de aplicaciones para Windows... Los invito cordialmente a que se inscriban al Diplomado de desarrollo de aplicaciones para Windows Phone 7.1, impulsado por Microsoft México para todo el mundo!  Completamente...

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

Rodrigo Díaz Concha Rss

Webcast: Kung Fu Silverlight – Los mejores consejos y pautas de arquitectura y prácticas

Posted on : 08-06-2011 | By : Rodrigo | In : Comunidades, MVP, Silverlight, Silverlight 4, Silverlight 5, Web Casts

Tags: , , , , , , , , ,

2

silverlight_logoEl día de hoy 08 de Junio 2011 realicé el Webcast: Kung Fu Silverlight – Los mejores consejos y pautas de arquitectura y prácticas, que si bien tiene un nombre bastante largo el enfoque fue principalmente el patrón de diseño MVVM.

El WebCast ya está disponible para verse en línea, o también lo pueden descargar de esta dirección.  El código fuente de la sesión lo pueden obtener de esta otra.

¡Espero que les sea de ayuda!

Herramientas de desarrollo para Windows Phone 7.1 Beta

Posted on : 24-05-2011 | By : Rodrigo | In : General, Noticias, Silverlight, Silverlight 4, Windows Phone 7

Tags: , , , , ,

0

windowsphone_logoEl día de hoy se han liberado las Herramientas de desarrollo para Windows Phone 7.1 Beta o mejor conocido por su nombre clave “Mango”

Las pueden descargar directamente desde este vínculo si quieren hacer la instalación en línea.  No obstante, les sugiero ampliamente que descarguen el archivo .ISO de las Herramientas para que las puedan reinstalar cuando lo necesiten.

Windows Phone 7.1 es un salto enorme para este sistema operativo ya que incluye cientos de características faltantes en la primera versión como por ejemplo multitasking, sockets, base de datos SQL local, acceso completo a los sensores, entre otros.

Si quieren conocer una lista más completa de las características presentes en esta nueva versión les sugiero ampliamente que revisen estos vínculos:

¿Qué esperan? Bájenlas mientras están calientitas! Smile

Salu2!

Silverlight Tour–Santiago, Chile (08 al 10 de Junio 2011)

Posted on : 23-05-2011 | By : Rodrigo | In : Cursos, Eventos, Silverlight, Silverlight 5, Silverlight Tour Workshop

Tags: , , , , , , , ,

0

SLT_TransNuevamente El Curso que ha Dado la Vuelta al Mundo: el Silverlight Tour Workshop en Español se impartirá en la capital chilena del 08 al 10 de Junio 2011.  Hay una promoción de descuento por pronto pago que finaliza el 01 de Junio que les sugiero no dejen pasar.

El Silverlight Tour es un curso de entrenamiento de Silverlight, actualizado a Silverlight 5 Beta, de 27 horas aproximadamente que se imparte al rededor del mundo.  El material está completamente en Español.

DSC_0755

Asimismo, el Silverlight Tour incluye una licencia de la suite de controles RadControls for Silverlight de nuestros patrocinadores Telerik con un valor comercial de 999 USD!!!

Si quieres aprender a desarrollar Aplicaciones de Negocio con Silverlight 5 Beta, esta es simplemente su mejor opción.  ¡Cientos de personas al rededor del mundo así lo testifican!

¡Los esperamos!

TechEd 2011 @ Atlanta, GA

Posted on : 11-05-2011 | By : Rodrigo | In : Eventos, General, Silverlight, Silverlight 5, Windows Phone 7

Tags: , , ,

0

TENA2011_L_AskAbout

El evento de educación técnica por excelencia en tecnologías Microsoft: el TechEd 2011 se llevará a cabo del 16 al 19 de Mayo 2011 en Atlanta, GA.

Este evento –como siempre- promete ser bastante interesante, pero sobre todo por la gran cantidad de anuncios recientes y productos recién liberados. 

Nuevamente estaré como parte del staff, participando como Guía Técnico en Silverlight y WP7, así que si tienen planeado ir al evento acérquense a saludar! Smile De lo contrario, podrán ver en vivo las transmisiones del keynote y algunas otras sesiones a través de streaming.  Les recomiendo ampliamente no se pierdan este magno evento!

!Allá nos vemos!

Examen 70-599 "Pro: Diseñando y Desarrollando Aplicaciones Windows Phone 7”

Posted on : 01-05-2011 | By : Rodrigo | In : General, Silverlight, Tips, Windows Phone 7

Tags: , , , ,

3

Picture1En semanas pasadas apoyé a Microsoft como Experto Técnico para la definición del Examen de Certificación 70-599 “Pro: Designing and Developing Windows Phone 7 Applications”.

El examen, que estará disponible al público en general el próximo 14 de Julio 2011, está diseñado para probar el conocimiento y habilidades del candidato al diseñar y desarrollar aplicaciones para Windows Phone 7.  Este examen es importante, ya que te ayudará a obtener la certificación MCPD: Windows Phone 7, Developer.

Las habilidades que definimos para que puedan pasar el examen las pueden revisar en esta dirección

No obstante, estoy convencido que es únicamente a través de la comprensión y dominio de Silverlight el mecanismo por el cual pueden construir aplicaciones robustas, escalables y con el mejor rendimiento, utilizando las bondades de la plataforma de desarrollo.  Es decir,  ser un desarrollador de Windows Phone 7 es únicamente una pequeña parte:  ser un desarrollador de Windows Phone 7 no los hace desarrolladores expertos en Silverlight:

Presentation1

Si están interesados en iniciar en el mundo de Silverlight y en nuestro idioma, les recomiendo vayan al sitio oficial y vean el Curso gratuito de Introducción a Silverlight 4 el cual consta de 25 videos completamente en español.  Asimismo les recomiendo visitar La Liga Silverlight en donde podrán encontrar diferentes artículos en español relacionados con Silverlight y también sigan a los MVP’s de Silverlight en Twitter.

Si deciden examinarse ¡por favor me cuentan qué les pareció! Smile

Salu2!

Ponencia en el VIII COREISC (27 de Abril 2011)–Cajamarca, Perú

Posted on : 07-04-2011 | By : Rodrigo | In : Comunidades, Conferencias, Eventos, MVP, Silverlight, Windows Phone 7

Tags: , , , , ,

0

coreisc

Mis buenos amigos de la Universidad Privada del Norte me han dado el honor de participar como ponente en el octavo Congreso Regional de Ingeniería de Sistemas y Computación (COREISC), que se llevará a cabo en la hospitalaria ciudad de Cajamarca, Perú del 25 al 29 de Abril 2011.

Este importante evento contará con la participación de diversos ponentes nacionales e internacionales que tratarán diversos temas de interés general en el área de Tecnologías de la Información.

windowsphone_logoPor mi parte estaré hablando sobre Silverlight y su utilización para el desarrollo de aplicaciones para el nuevo sistema operativo móvil de Microsoft: Windows Phone 7 a través de mi ponencia: “El ABC de programación para el nuevo Windows Phone 7

Aquí está la descripción del evento:

La Universidad Privada del Norte Cajamarca, se complace en presentarse como la sede del VIII COREISC – UPN 2011, denominado "INFRAESTRUCTURA TECNOLÓGICA PARA UN PERÚ MODERNO Y COMPETITIVO", e invita a los alumnos, profesionales y público interesado a participar de las actividades academicas organizadas con el fin de concientizar el uso de una adecuada infraestructura tecnologica como herramienta de desarrollo en nuestro país.

La lista entera de ponentes y el calendario completo de ponencias la pueden encontrar en el sitio del evento.

 

¡Si están planeando ir: allá nos vemos!

Mapa de la República Mexicana en XAML (nuevamente)

Posted on : 30-11-2010 | By : Rodrigo | In : General, Silverlight, Tips

Tags: , , ,

1

Hace más de 2 años publiqué un Mapa de México en XAML, para que lo pudieran utilizar en sus aplicaciones de Silverlight (versión 2 beta en aquel entonces si no mal recuerdo…).  No obstante el hospedaje en donde estaba el archivo sufrió diversas modificaciones y ajustes a lo largo de todo este tiempo y el vínculo quedó roto.

image

Aquí se los vuelvo a poner para que lo utilicen en sus aplicativos, espero que les sirva!  Por favor comenten aquí si les sirve y para qué lo están utilizando!

El vínculo de descarga es:

http://ligasilverlight.com/codigo/Mexico.rar

Salu2!

El Futuro de Silverlight

Posted on : 12-11-2010 | By : Rodrigo | In : Conferencias, Eventos, Silverlight

Tags: ,

1

¿Quieres conocer el futuro de Silverlight?

image

Asiste al Silverlight Firestarter: un evento en línea de todo un día acerca de Silverlight.  El evento se realizará el próximo 02 de Diciembre 2010 en línea y presencial en el Campus MS.

Los invito a que se registren en esta página.

No se lo pierdan!

Fundamentos de Silverlight–Parte 11

Posted on : 08-11-2010 | By : Rodrigo | In : MVP, Silverlight, Silverlight 4

Tags: , , , ,

5

Manejo de Eventos

En Silverlight tenemos tres maneras diferentes para poder manejar eventos.

  • Desde XAML
  • A través de código usando la sintaxis estándar
  • A través de código usando Expresiones Lambda

Manejo de eventos usando XAML

Podemos manejar los eventos de los elementos usando XAML. La siguiente caja de texto demuestra el manejo del evento Click del control Button:

 

<Button Click="Button_Click" />

 

…y su código relacionado usando el lenguaje C#:

private void Button_Click(object sender, RoutedEventArgs e)

{

    //Manejo del evento

}

Manejo de eventos usando la sintaxis del lenguaje

Como cualquier otro evento en C#, podemos usar el operador sobrecargado += para asignar el método que deseamos que se ejecute cuando el evento sea disparado. La siguiente caja de texto demuestra la asignación del método button1_Click al evento Click de un botón:

this.button1.Click += new RoutedEventHandler(button1_Click);

 

private void button1_Click(object sender, RoutedEventArgs e)

 

{

    //Manejo del evento

}

Manejo de eventos usando Expresiones Lambda

Las expresiones lambda son funciones anónimas que podemos utilizar para crear delegados. El siguiente código muestra el uso de una Expresión Lambda como manejador del evento Click de un botón.

//s es object y a es RoutedEventArgs

 

this.button1.Click += (s, a) =>

{

    //Manejo del evento

};

Una de las ventajas claras de utilizar una Expresión Lambda es que nos ahorraremos el cuerpo del método que está manejando el evento. Generalmente en escenarios en donde necesitemos crear contenido dinámico es de gran utilidad contar con esta posibilidad.

Fundamentos de Silverlight–Parte 10

Posted on : 08-11-2010 | By : Rodrigo | In : MVP, Silverlight, Silverlight 4

Tags: , , , ,

11

Clase UIElement

La clase UIElement es la clase base para todos los elementos visuales en Silverlight. En esta clase es en donde se definen la gran mayoría de los eventos de interacción con el usuario (eventos del mouse, teclado, enfoque, etc.). Algunos de los eventos incluidos en esta clase son:

  • MouseLeftButtonDown
  • MouseLeftButtonUp
  • MouseRightButtonDown
  • MouseRightButtonUp
  • MouseEnter
  • MouseLeave
  • Drop

Eventos Ruteados

La mayoría de los eventos anteriores que expone la clase UIElement son ruteados, esto es, son eventos que van escalando desde lo más profundo del árbol de objetos de XAML hacia arriba (a este término se le denomina bubbling en inglés). En los argumentos de este tipo de eventos podremos encontrar la propiedad Handled, la cual indica si el evento sigue escalando o no. Debido a la naturaleza que tienen los eventos ruteados podríamos crear manejadores de eventos globales para diversos elementos visuales.

Fundamentos de Silverlight–Parte 9

Posted on : 08-11-2010 | By : Rodrigo | In : MVP, Silverlight, Silverlight 4

Tags: , , , ,

1

Clase UserControl

Enfoquémonos ahora en MainPage.xaml por tratarse de un archivo de suma importancia ya que es ahí donde expresamos la Interface de Usuario para nuestra Aplicación. Si abrimos este archivo en Visual Studio podremos observar que su código comienza con la declaración de un elemento de tipo <UserControl> . Es en este elemento en donde se indica cuál es la clase de código relacionada para este código XAML en específico, además de importar los espacios de nombres requeridos por el intérprete de XAML (el único espacio de nombres requerido por el intérprete de XAML es el indicado con la línea xmlns=”…”):

<UserControl x:Class="Fundamentos.Inicial.MainPage"

 

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

 

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

 

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

 

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

 

mc:Ignorable="d"

 

d:DesignHeight="300" d:DesignWidth="400"

 

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

 

La clase de código relacionada (Fundamentos.Inicial.MainPage) es en donde escribiremos la funcionalidad que necesite la aplicación, por ejemplo, los manejadores de eventos para los controles, etc. La clase UserControl hereda indirectamente de la clase UIElement que analizaremos a continuación.

Los espacios de nombres (namespaces) mostrados en el código anterior son necesarios cuando requerimos traer a nuestro ámbito las clases y elementos que estos contienen. Esto es también cierto si deseas declarar instancias de tus propios objetos a través de XAML. Esto es análogo a la cláusula using en el lenguaje de programación C# o la cláusula Imports en Visual Basic .NET. Los alias que utilizan los espacios de nombres son totalmente arbitrarios y solamente se utilizan para mejor legibilidad del código.

Fundamentos de Silverlight–Parte 8

Posted on : 08-11-2010 | By : Rodrigo | In : MVP, Silverlight, Silverlight 4

Tags: , , , ,

17

Cacheo de Ensamblados

Como lo describimos en una sección anterior, al compilar un proyecto de Silverlight se creará el empaquetado XAP que contiene todos los Ensamblados necesarios para poder ejecutar la Aplicación. Estos Ensamblados son parte del empaquetado para poder estar disponibles de manera inmediata cuando la Aplicación este corriendo, no obstante el tamaño de dichos archivos impacta de manera directa el tamaño final del archivo XAP.

Cuando referenciamos Ensamblados externos, estos Ensamblados son incluidos como parte del archivo XAP. Un ejemplo claro de esto es el uso del control DataGrid. El control DataGrid es un control que nos permite desplegar datos de manera tabular en nuestros aplicativos. No obstante, el control DataGrid no pertenece al núcleo de Silverlight per se, sino que es parte del SDK de Silverlight.

Si arrastramos el control DataGrid de la caja de herramientas y lo soltamos en el diseñador interactivo de Visual Studio podemos percatarnos que por el simple hecho de estarlo declarando, el DataGrid referencia los siguientes Ensamblados:

  • System.ComponentModel.DataAnnotations.dll
  • System.Windows.Controls.Data.dll
  • System.Windows.Controls.Data.Input.dll
  • System.Windows.Data.dll

image

La figura anterior muestra el contenido del archivo XAP, al haber declarado el control DataGrid dentro de nuestra Aplicación. Como podemos observar, los archivos que se incluyen ahora son más, si lo comparamos con la lista de archivos cuando inicialmente creamos el proyecto. Esto también se ve reflejado en el Manifiesto de la Aplicación:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="Fundamentos.Inicial" EntryPointType="Fundamentos.Inicial.App" RuntimeVersion="4.0.50826.0">

 

<Deployment.Parts>

 

<AssemblyPart x:Name="Fundamentos.Inicial" Source="Fundamentos.Inicial.dll" />

 

<AssemblyPart x:Name="System.ComponentModel.DataAnnotations" Source="System.ComponentModel.DataAnnotations.dll" />

 

<AssemblyPart x:Name="System.Windows.Controls.Data" Source="System.Windows.Controls.Data.dll" />

 

<AssemblyPart x:Name="System.Windows.Controls.Data.Input" Source="System.Windows.Controls.Data.Input.dll" />

 

<AssemblyPart x:Name="System.Windows.Data" Source="System.Windows.Data.dll" />

 

</Deployment.Parts>

 

</Deployment>

El elemento <Deployment.Parts> ahora incluye los archivos que requiere el control DataGrid. Esto mismo sucedería al estar referenciando cualquier tipo de Ensamblado externo, ya sea de terceros o propio. En este momento, el archivo XAP mide aproximadamente 220 KB ya empacado.

image

Si abrimos las propiedades del proyecto de Silverlight, encontraremos -entre otras opciones- la opción para reducir el tamaño del archivo XAP, a través del Cacheo de Ensamblados.

image

Al compilar nuevamente el proyecto de Silverlight nos podemos percatar de que ahora cada uno de los Ensamblados referenciados (indicados en la lista anteriormente) ha sido empaquetado en un archivo ZIP de manera individual, y cada uno ha sido copiado al fólder ClientBin, al lado del archivo XAP de la Aplicación.

image

Además, si abrimos nuevamente el archivo XAP veremos que los Ensamblados ya no son incluidos como parte del XAP…

image

…que el tamaño del archivo se ha reducido dramáticamente…

image

…y que el Manifiesto de la Aplicación ha sido modificado para indicar que ahora esos Ensamblados son externos. Esto queda expresado a través del elemento <Deployment.ExternalParts> como a continuación se muestra en la siguiente caja de texto:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="Fundamentos.Inicial" EntryPointType="Fundamentos.Inicial.App" RuntimeVersion="4.0.50826.0">

  <Deployment.Parts>

    <AssemblyPart x:Name="Fundamentos.Inicial" Source="Fundamentos.Inicial.dll" />

  </Deployment.Parts>

  <Deployment.ExternalParts>

    <ExtensionPart Source="System.ComponentModel.DataAnnotations.zip" />

    <ExtensionPart Source="System.Windows.Controls.Data.zip" />

    <ExtensionPart Source="System.Windows.Controls.Data.Input.zip" />

    <ExtensionPart Source="System.Windows.Data.zip" />

  </Deployment.ExternalParts>

</Deployment>

Ahora la Aplicación ha sido configurada para que los ensamblados externos sean descargados de manera individual y sean colocados en el Cache del navegador pero únicamente la primera vez, para que en ejecuciones subsecuentes de la Aplicación, los Ensamblados –si no han sido modificados- los cargue directamente del Cache y no del Servidor. Esto asegurará que únicamente sea descargado el archivo XAP, que por el hecho de haber reducido su tamaño ahora la Aplicación cargará más rápido.

Esta técnica para reducir el tamaño de los archivos XAP funciona tanto para los Ensamblados que pertenecen al SDK de Silverlight, los del Silverlight Toolkit e incluso en nuestros propios Ensamblados. Para hacer esto lo único que necesitamos es crear un archivo XML de metadatos para cada uno de ellos.

Creación del Archivo de Mapeo

Para que podamos Cachear Ensamblados propios, necesitamos crear un archivo con el mismo nombre que el Ensamblado en cuestión pero con extensión extmap.xml. Por ejemplo, si nuestro Ensamblado se llamase Utilerias.dll, el archivo de Mapeo deberá llamarse Utilerias.extmap.xml y deberá estar al lado del archivo .dll original.

El contenido del archivo de Mapeo será el siguiente:

<?xml version="1.0"?><manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

 

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 

<assembly>

 

<name>NOMBRE DEL ENSAMBLADO</name>

 

<version>VERSION DEL ENSAMBLADO</version>

 

<publickeytoken>PUBLIC KEY TOKEN</publickeytoken>

 

<relpath>RUTA DEL DLL</relpath>

 

<extension downloadUri="NOMBRE DEL ARCHIVO ZIP A DESCARGAR" />

 

</assembly>

 

</manifest>

 

Los elementos deberán empatar los valores del Ensamblado en cuestión. Asimismo, debemos tomar en cuenta que el Ensamblado deberá estar firmado con una llave de Strong Name usando la utilería sn.exe o directamente usando el panel de propiedades del proyecto del Ensamblado para crear la llave criptográfica.

Comprobación del Cacheo de Ensamblados

Una manera sencilla para comprobar si el Cacheo de Ensamblados está funcionando o no es publicar la Aplicación a un sitio Web público y accesible y utilizar alguna herramienta de inspección como Fiddler.

En este caso publicaré la Aplicación de ejemplo en mi sitio rdiazconcha.com a través del copiado de los archivos vía FTP. Los archivos publicados serán la página .aspx y el fólder ClientBin. El URL final para este ejemplo de comprobación será: http://rdiazconcha.com/Fundamentos/Fundamentos.InicialTestPage.aspx

Si abrimos Fiddler para inspeccionar todo el tráfico de HTTP y abrimos un navegador que haga una petición al URL indicado nos daremos cuenta que efectivamente la primera vez que ejecutamos la Aplicación todos los Ensamblados son descargados posterior a la descarga del archivo XAP principal, ya que no existen en el Cache del navegador aún.

image

Si abrimos una nueva instancia del navegador y volvemos a hacer una petición a la misma página, nos daremos cuenta que ni la Aplicación ni los Ensamblados ya no serán descargados, sino tomados del Cache del navegador.

image

Ahora bien, si hacemos algún cambio en los archivos ZIP de los Ensamblados –por ejemplo borrarlos de ClientBin y volver a recompilar toda la Solución para que se regeneren y tengan una nueva estampa de tiempo- y publicamos los archivos nuevamente veremos que efectivamente los archivos ZIP son descargados nuevamente y no son tomados los del Cache. Para este ejemplo volví a publicar únicamente el archivo System.Windows.Data.zip en mi sitio con una nueva estampa de tiempo. Al volver a hacer la petición de la página el resultado que arroja Fiddler será el siguiente:

image

De esta manera podemos comprobar que únicamente se descargan los archivos que hayan sido actualizados, el resto serán adquiridos a través del Cache del navegador en cuestión.