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

Tour MVP 2011 en Perú

Posted on : 18-04-2011 | By : Rodrigo | In : Comunidades, Conferencias, Cursos, Eventos, MVP, Silverlight 5, Windows 7

Tags: , , , , , , , , , , , , ,

0

¡Amigos(as) del Perú!

Mis buenos amigos y colegas Elías Mereb, Francis Urteaga y un servidor estaremos realizando el Tour MVP 2011 en su país.  Es para mí una verdadera emoción poder regresar a tan fascinante tierra, con una gran historia y una gastronomía espectacular! Y en donde me siento honrado de contar con excelentes amigos(as) y colegas del mundo de tecnologías Microsoft.

Afiche-MVP-Tour-Peru

Estaremos en las ciudades de Cajamarca, Trujillo y Lima realizando diversas charlas y actividades cada quien en su área como experto.

Por mi parte estaré hablando de Silverlight 5 Beta y Silverlight para Windows Phone, iniciando en el COREISC, y finalizando con el curso privado “Construyendo las Aplicaciones del futuro con Silverlight 5 Beta” en las oficinas Microsoft Perú.

Si están en alguna de las ciudades, no duden en asistir!  Ya sea si su interés es Windows, Internet Explorer o Silverlight estoy seguro que les será edificante.

 

¡Allá nos vemos!

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!

Webcast: Novedades en Silverlight 5 Beta

Posted on : 04-04-2011 | By : Rodrigo | In : Comunidades, Conferencias, Eventos, La Liga Silverlight, MVP, Silverlight 5

Tags: , , ,

8

April 20, 2011

sl5bloglogo

Ya que públicamente y de manera abierta Microsoft ha anunciado el día de hoy que liberará Silverlight 5 Beta durante el MIX11 tengo el honor de anunciar el siguiente evento virtual:

Novedades en Silverlight 5 Beta

20 de Abril 2011

20:00 horas (-06:00 GMT)

21 de Abril 2011

11:00 horas (-06:00 GMT)

En este Webcast veremos las nuevas características incorporadas en Silverlight 5 Beta para Aplicaciones de Negocio, nuevas funcionalidades, componentes y los cambios en las herramientas para ser mayor productivos al momento de crear aplicaciones de este tipo.

Los invito a que asistan entrando en esta dirección el día del evento.

Si son desarrolladores de esta plataforma no se lo querrán perder.

¡Los esperamos!

Update 20/Abr/2011

Por causas de fuerza mayor me veo obligado a mover este WebCast para un día después a las 11am (21 de Abril 2011).  El vínculo sigue siendo el mismo.
Update 30/Abr/2011

Update 07/Jun/2011

Aquí está la grabación de la sesión

(Chile) Taller de Desarrollo para Windows Phone 7

Posted on : 29-03-2011 | By : Rodrigo | In : Conferencias, Eventos, MVP, Windows Phone 7

Tags: , , , ,

9

Mis buenos amigos de Microsoft Chile han organizado el siguiente evento en donde he sido invitado para impartir un Taller de Desarrollo para Windows Phone 7. Aquí la información completa:

clip_image002

Te invitamos a un evento exclusivo orientado a desarrolladores y empresas con experiencia en plataformas móviles (IPhone, Android y otras), con un orador invitado: Rodrigo Díaz Concha, Microsoft MVP de México.

Windows Phone 7 es la nueva versión del Sistema Operativo móvil de Microsoft.  Ven y conoce su plataforma de desarrollo, que te permitirá construir aplicaciones modernas de una manera fácil y rápida.  En este taller aprenderás los conceptos técnicos fundamentales necesarios para iniciarte en el emocionante mundo del desarrollo para  WP7 con Silverlight. Trae tu notebook si quieres experimentar de inmediato con las herramientas, tendremos el software disponible para que instales, pero si puedes descargarlo y traerlo instalado previamente mucho mejor para que no pierdas ningún minuto!

El software para desarrollar en Windows Phone es gratuito! Descárgalo desde aquí.

windowsphone_logo

Fecha: Jueves 31 de Marzo, 2011 de 8.30 a 13.30 hrs.

Lugar: Hotel Rugendas, Callao 3123. Salón Rugendas.

Para confirmar tu inscripción envía un correo a violetar@microsoft.com con tus datos. Máximo 3 personas por empresa. Cupos Limitados.

Esperamos sea de tu interés.

Si piensan ir, les sugiero que instalen previamente las herramientas necesarias.  Para mayor información chequen está página.

Además, pueden estar presentes de manera remota y el taller quedará grabado para su posterior descarga.  Regístrense aquí a la sesión remota!

¡Allá nos vemos!

Introducción a Silverlight 5

Posted on : 21-02-2011 | By : Rodrigo | In : MVP, Silverlight 5

Tags: ,

1

<Próximamente>

Winking smile

</Próximamente>

Reunión de la Comunidad .NET Guatemala (08 de Febrero 2011)

Posted on : 03-02-2011 | By : Rodrigo | In : Comunidades, Conferencias, Eventos, MVP, Silverlight 4

Tags: , , , , , , ,

0

ComunidadNETGuatemalaLes invito cordialmente a todos(as) que asistan a la próxima reunión de la Comunidad de Desarrolladores .NET de Guatemala en donde tengo el honor de haber sido invitado como orador.

La cita es el próximo martes 08 de Febrero 2011, los datos completos a continuación:

Fecha: Martes 8 de Febrero de 2011
Hora: De 6:30pm a 8:30pm
Lugar Oficinas de Microsoft de Guatemala
Dirección: 14 calle 2-51 zona 10, Edificio Intercontinental Nivel 11 Oficina 1101
Precio: ¡¡Gratis!!
Habrá premios por participación

En esta sesión hablaremos de Silverlight 4.  Si tienen dudas acerca de esta plataforma de desarrollo, o acerca de Windows Phone 7 por favor traiganlas para ayudarles a resolverlas!

Toda la información completa y el registro lo pueden encontrar aquí.

Allá nos vemos!!! Será un verdadero gusto conocerles.

Salu2!

Invitación a la Reunión de la Comunidad MSNETSV–San Salvador (02/Feb/2011)

Posted on : 02-02-2011 | By : Rodrigo | In : Comunidades, Conferencias, Eventos, MVP, Silverlight 4

Tags: , , , , , , ,

0

Tengo el honor de haber sido invitado a la próxima reunión de la Comunidad MSNETSV en las oficinas de Microsoft El Salvador el día de hoy a las 18:00 horas.  Hablaremos de Aplicaciones de Negocio con Silverlight 4 y temas relacionados.  La cita es en:

Microsoft El Salvador

89 ave Norte y Calle el Mirador Edif World Trade Center Torre 2 Nivel 5

Colonia Escalon

San Salvador, El Salvador

Si están por la zona y les interesa el desarrollo de aplicaciones con Silverlight y .NET en general es invito cordialmente a que asistan!

MSNETSV_20110202_Silverlight

Los esperamos!

Webcast: Interoperabilidad con COM en aplicaciones Silverlight 4

Posted on : 25-11-2010 | By : Rodrigo | In : Comunidades, Conferencias, Eventos, MVP, Silverlight 4, Web Casts

Tags: , , , , ,

0

image

Gracias a todos(as) por asistir al Webcast: “Interoperabilidad con COM en aplicaciones Silverlight 4” que realicé hoy por la mañana.  Pueden descargar el video de la misma dirección de donde se registraron (si no lo hicieron lo pueden hacer en este momento). Al momento de estar escribiendo este post aún no está disponible pero tengo entendido que en las próximas 24 horas deberá estarlo.

También pueden descargar el código fuente de la aplicación con los ejemplos que se realizaron en esta dirección.

Gracias y salu2!

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.