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

TechDays Chile 2011

Posted on : 08-11-2011 | By : Rodrigo | In : Conferencias, MVP, Silverlight 5, Windows Phone 7.1

Tags: , , , , , , , ,

0

techdays240x120El evento más importante de tecnologías Microsoft en Chile: el TechDays, en su edición 2011, se llevará a cabo el próximo 21 de Noviembre en el centro de convenciones Espacio Riesco en Santiago.

Es para mí verdaderamente un honor el haber sido invitado nuevamente como orador a este Magno evento, que sin duda alguna será de altísima calidad debido a sus contenidos y a la gran cantidad de expositores locales y extranjeros que participarán en él.

Durante el evento estaré participando en tres charlas:

Windows Phone 7.5 y Windows Phone Marketplace

10:40 horas

En esta charla estaré al lado de Pablo García, de Microsoft Uruguay, hablando acerca de la plataforma móvil Windows Phone, sus diversas ventajas para empresas y las características del Mercado de Aplicaciones.  Esta charla estará enfocada principalmente a empresas y tomadores de decisión.

Nuevas características en Silverlight 5

16:00 horas

A partir de lo anunciado en el evento Build el 13 de Septiembre 2011 con respecto a Windows 8 y su Plataforma de Desarrollo, conocer Silverlight es ahora más importante y relevante que nunca.  Ven y conoce en esta sesión algunas de las nuevas características en Silverlight 5 y las ventajas que tiene esta tecnología para la creación de Aplicaciones de Negocio de escritorio para el presente y el futuro.  Esta charla estará enfocada principalmente a desarrolladores.

Desarrollo de Aplicaciones para Windows Phone 7.5

17:00 horas

Al lado de mi buen amigo Leonardo Garcés, estaremos detallando la plataforma de desarrollo de Silverlight para Windows Phone y sus fundamentos para la construcción de aplicaciones para el teléfono y su publicación.  Esta charla estará enfocada principalmente a desarrolladores que deseen adentrarse en esta tecnología.


Les invito cordialmente a que preparen sus agendas y asistan a este evento, el cual estoy completamente seguro les será de mucha utilidad y valor en sus carreras profesionales.  ¡Me dará muchísimo gusto conocerles!

El registro estará abierto próximamente, así que les recomiendo visiten la página oficial del evento para mayor información al respecto.

 

¡Allá nos vemos!

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)

Posted on : 02-11-2011 | By : Rodrigo | In : MVP, Noticias, Silverlight, Silverlight 4, Windows Phone 7.1

Tags: , , , , , , ,

4

mvaTengo 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 de la carrera:

Windows Phone es la nueva versión del sistema operativo móvil de Microsoft, el cual es un sistema operativo moderno, fresco y novedoso que te permite realizar más en menos tiempo y estar al tanto de las cosas que más te importan de una más rápida y divertida. Con la última versión 7.1 conocida con el nombre clave “Mango”, el construir aplicaciones para el teléfono jamás había sido tan fácil ya que una de las plataformas deWP-Logo1 desarrollo soportadas es Silverlight 4: una plataforma robusta, moderna y altamente funcional.   En esta Carrera estudiarás los conceptos fundamentales de Silverlight para Windows Phone Mango y conocerás cómo aprovechar al máximo las características específicas de este tipo de dispositivos en beneficio de tus aplicaciones.

La carrera tiene en este momento los siguientes módulos:

Nivel Básico

  • Capítulo I: Fundamentos de Silverlight y Windows Phone
  • Capítulo II: Layout y Entrada Táctil
  • Capítulo III: Visuales y Medios
  • Capítulo IV: Publicación de Aplicaciones

Nivel Intermedio

  • Capítulo V: Trabajando con Datos
  • Capítulo VI: Sensores y otras características especiales del teléfono
  • Capítulo VII: Ciclo de Vida de las Aplicaciones Windows Phone

Al estudiar las diferentes carreras de MVA puedes incrementar tus habilidades como desarrollador en las diversas tecnologías incluidas. Las carreras en MVA son una excelente opción de entrenamiento, son completamente gratuitas y además puedes estudiar a tu propio ritmo.

Los invito cordialmente a que se registren en esta dirección, estudien la carrera y demuestren sus conocimientos en esta extraordinaria plataforma de desarrollo!

Espero les agrade.

Salu2!

Silverlight para Ninjas–16 y 17 de Noviembre de 2011 | Microsoft Chile

Posted on : 01-11-2011 | By : Rodrigo | In : Cursos, Silverlight 4, Silverlight 5, Windows Phone 7.1

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

0

imagePrevio al TechDays Chile 2011 en donde participaré nuevamente como orador, estaré impartiendo el curso avanzado de Silverlight:  Silverlight para Ninjas los días 16 y 17 de Noviembre 2011 en las oficinas de Microsoft Chile.  Este curso, de duración de 2 días completos, está enfocado a desarrolladores profesionales que ya tienen una experiencia mínima de 6 meses desarrollando aplicaciones con la plataforma de desarrollo de Silverlight.

La información completa a continuación.


Curso Avanzado: Silverlight para Ninjas

Descripción

Contar únicamente con los fundamentos de la plataforma de desarrollo Silverlight no es suficiente para construir Aplicaciones de Negocio robustas, escalables y de fácil mantenimiento.  SilverlightUna noción profunda y detallada de la plataforma es necesaria para poder llevar a otro nivel tus aplicativos desarrollados con esta tecnología.

En este curso aprenderás técnicas y conceptos avanzados de Enlace de Datos, Comunicaciones y el Patrón de Diseño Model-View-ViewModel (MVVM).  Los conceptos que aquí aprendas se pueden emplear en Aplicaciones Windows Phonede Escritorio construidas con Silverlight 4 o 5, y también en aplicaciones para Windows Phone 7.1 (Mango)!

Temario

  • Enlace de Datos Avanzado
  • Comunicaciones y Networking
  • El Patrón de Diseño Model-View-ViewModel (MVVM)
  • Modularización de Aplicaciones con Prism 4.0

Audiencia

Desarrolladores profesionales con experiencia mínima de 6 meses en la plataforma de desarrollo de Silverlight

Costo

500 Dólares Americanos (USD) por participante

Fecha y Horario

16 y 17 de Noviembre 2011

09:00 a 18:00 horas

Lugar

Microsoft Chile

Mariano Sanchez Fontecilla 310 Piso 6

Santiago, Chile

¿Qué llevar?

Nota: Toma en cuenta traer el software en inglés, ya que al día de hoy las herramientas de Silverlight 5 RC solo están disponibles en ese idioma y no pueden ser instaladas si Visual Studio está en español

¿Cuándo debo pagar?

La fecha límite de pago para participar en el curso será el día 16 de Noviembre 2011 a las 9:00 a.m.

¿Cuáles son las formas de pago?

Las formas de pago son:

  • A través de transferencia bancaria internacional (Wire Transfer).  Puedes solicitar este servicio en tu banco.
  • En efectivo, en Dólares Americanos (USD) o el equivalente en Pesos Chilenos.  El pago en efectivo podrá ser en persona el día de inicio del curso

Registro

¡El cupo es limitado! Para registrarte al curso, manda un correo a info@devmasters.com.mx con tu nombre completo tal y como quieres que aparezca en tu Certificado de asistencia.  Te enviaremos por correo la información bancaria en donde podrás pagar el costo total del curso antes de la fecha límite para asegurar tu lugar. Por favor no olvides marcar la dirección info@devmasters.com.mx como dirección segura.

¿Qué incluye?

  • Dos días completos de intenso entrenamiento en Silverlight
  • Material digital completamente en Español
  • Coffee Break

¡Allá nos vemos!

Silverlight para Windows Phone Mango: Fast Application Switching (FAS)

Posted on : 01-11-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Windows Phone 7.1

Tags: , , , , ,

1

En la versión inicial de Windows Phone 7, cuando una aplicación estaba activa pero era interrumpida por cualquier que sea la causa (una llamada entrante, un mensaje del sistema, el usuario apretó el botón “Atrás” del teléfono, el usuario apretó el menú de inicio, etcétera), la aplicación entraba en un estado de suspensión, conocido como Tombstoning.

Este proceso de Tombstoning guardaba a disco el estado de la aplicación, de tal manera que si apretábamos nuevamente el botón “Atrás” del teléfono para regresar a la aplicación, la aplicación era rescatada de su estado desde el disco nuevamente hacia la memoria y se reactivaba para poder seguir usándola.  Este proceso era sumamente tardado y no brindaba la mejor experiencia de usuario posible.

imageEn Windows Phone Mango se introduce un concepto denominado Fast Application Switching (o FAS, por sus siglas en el idioma inglés).  Este concepto cambia el ciclo de vida de las aplicaciones de Windows Phone, ya que cuando una aplicación está ejecutando y es interrumpida (nuevamente, por cualquiera que sea la causa), la aplicación no entra a Tombstoning inmediatamente sino que entra en un estado denominado “Dormant”, de tal manera que continúa en memoria pero sin consumir recursos del CPU del teléfono.  De esta forma, al pulsar el botón “Atrás” para regresar a la aplicación, la restauración es casi instantánea ya que no tiene que leer el estado desde el disco sino de la memoria, siendo este mecanismo una característica muy importante en Windows Phone Mango para brindar una experiencia de usuario superior a la versión inicial del sistema operativo.

Propiedad IsApplicationInstancePreserved

En el objeto de argumentos del eventos Activated de la aplicación, se ha agregado en Windows Phone Mango la propiedad IsApplicationInstancePreserved, la cual indica si la aplicación está siendo restaurada del estado Dormant (valor true) o se está restaurando desde su estado de Tombstoning (valor false).

La idea detrás de esta propiedad es poder determinar si restauramos el estado de la aplicación o no.  El algoritmo es sencillo: si la aplicación está restaurándose desde el estado Dormant, no tenemos que hacer nada, solo si está restaurándose desde el estado Tombstoning.

Para poder determinar este valor dentro de las páginas de nuestras aplicaciones, podemos exponer un campo estático de tipo bool dentro de la clase de aplicación, el cual podrá ser inicializado justamente durante el evento Activated.  El siguiente fragmento de código muestra cómo se implementa un campo público estático que guardará el valor de la propiedad IsApplicationInstancePreserved.  En este caso, el nombre del campo es el mismo pero esto no es necesario.

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    IsApplicationInstancePreserved = e.IsApplicationInstancePreserved;
}

public static bool IsApplicationInstancePreserved;

 

Ya dentro de la página en cuestión, podemos leer el valor de este campo para realizar cualquier tipo de algoritmo relacionado.  En este caso, simplemente estoy mostrando los valores “Dormant” o “Tombstoning” según sea el caso.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    texto.Text = App.IsApplicationInstancePreserved ? "Dormant" : "Tombstoning";
}

 

La siguiente ilustración, muestra la aplicación de ejemplo corriendo después de haber sido restaurada desde el estado Dormant.

SNAGHTML2a4beba

Resumen

Con Fast Application Switching (o FAS, por sus siglas en inglés), nuestras aplicaciones de Silverlight para Windows Phone Mango son más responsivas y brindan una mejor experiencia de usuario ya que su restauración es casi inmediata, a diferencia de la versión inicial de Windows Phone 7, en donde se tenía que restaurar el estado de cada aplicación desde disco.  Esta característica ya es parte del sistema operativo, por lo que únicamente nos queda como desarrolladores determinar en el evento Activated si la aplicación está siendo restaurada desde el estado Dormant o el estado Tombstoning.

Silverlight para Windows Phone Mango: Bases de Datos locales con SQL Server CE–Parte 2

Posted on : 01-11-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Windows Phone 7.1

Tags: , , , , , ,

7

En el artículo anterior, mencioné que es a través de LINQ para SQL el mecanismo por el cual interactuamos completamente con la base de datos de nuestras aplicaciones de Silverlight para Windows Phone Mango.  En este artículo veremos cómo programáticamente podemos crear una base de datos e interactuar completamente con ella.

Definición de la base de datos

Para definir el modelo de la base de datos para nuestras aplicaciones de Windows Phone Mango, debemos utilizar la técnica de “Primero el Código” (o “Code First” como se le conoce en el idioma inglés).  Esta técnica te permite definir tu modelo por medio de clases y atributos.  Una vez definidas las clases, éstas pueden ser utilizadas para generar el esquema de la base de datos o mapearse a una base de datos ya existente.

Creación de las tablas

Para definir una tabla para la base de datos debemos utilizar los atributos TableAttribute y ColumnAttribute, ambos del Espacio de Nombres System.Data.Linq.Mapping.  Estos atributos, respectivamente, permiten identificar que una clase será una tabla dentro de la base de datos y que una propiedad dentro de esa clase será una columna dentro de la tabla.

Estos atributos mencionados están incluidos en el ensamblado System.Data.Linq.dll, por lo que deberás incluir una referencia a él en tu proyecto para utilizarlos.

El siguiente fragmento de código muestra la declaración de una tabla llamada Persona, la cual tendrá tres columnas: ID, Nombre y Empresa.

[Table]
public class Persona
{
    [Column(IsDbGenerated = true, IsPrimaryKey = true)]
    public int ID { get; set; }

    [Column]
    public string Nombre { get; set; }

    [Column(CanBeNull = true)]
    public string Empresa { get; set; }
}

 

Creación del contexto de datos

El contexto de datos es un objeto que representa a la base de datos.  El contexto de datos contiene las tablas, que a su vez contienen las columnas que definen dicha tabla.

Para crear un contexto de datos, debemos crear una clase que herede de la clase base DataContext, disponible en el Espacio de Nombres System.Data.Linq.  Será en esta clase en donde debemos declarar las tablas que tendrá la base de datos.  Asimismo, la clase que definamos podrá invocar alguno de los constructores de la clase base DataContext para pasar como parámetro la cadena de conexión que indique a cuál base de datos estamos interesados en conectarnos.

El siguiente código muestra la declaración de la clase PersonaDataContext, la cual hereda de System.Data.Linq.DataContext y que establece que existirá una tabla llamada Personas.

public class PersonaDataContext : DataContext
{
    public Table<Persona> Personas;

    public PersonaDataContext(string connectionString) : base(connectionString) { }
}

 

Nota cómo el constructor de esta clase a su vez está invocando el constructor de su clase base.  De esta manera permitiríamos utilizar una u otra cadena de conexión para reutilizar este contexto de datos en diferentes escenarios.

La cadena de conexión puede ser cualquiera de las siguientes opciones: una cadena con el prefijo isostore:/, el nombre del archivo de base de datos dentro del Almacenamiento Aislado o una cadena de conexión completa.

Creación de la base de datos

Para crear físicamente la base de datos en el Almacenamiento Aislado de la aplicación dentro del teléfono, debemos utilizar el método CreateDatabase() del contexto de datos.  Para complementar esta tarea, también podemos ejecutar el método DatabaseExists() para determinar si la base de datos ya ha sido creada con anterioridad.

Para poder probar esta funcionalidad, he creado otra clase llamada PersonaDatabase, la cual encapsula la funcionalidad de creación física de la base de datos para la aplicación, tal y como lo muestra el siguiente código.

public class PersonaDatabase
{
    public static PersonaDataContext GetDatabase()
    {
        var context = new PersonaDataContext("isostore:/personas.sdf");

        if (!context.DatabaseExists())
        {
            context.CreateDatabase();
        }

        return context;
    }
}

 

Inserción de datos

Una vez creada la base de datos, podemos insertar datos a sus respectivas tablas, todo esto por medio de los mismos mecanismos que LINQ para SQL ofrece.  En el siguiente código se demuestra la creación de 1000 personas que serán finalmente insertadas en la tabla Personas dentro de la base de datos que creamos en pasos anteriores.  Nota el uso del método SubmitChanges(); este método se asegura de finalizar la transacción hacia el motor de base de datos.

private static void CrearDatos()
{
    var db = PersonaDatabase.GetDatabase();
    for (int i = 0; i < 1000; i++)
    {
        db.Personas.InsertOnSubmit(new Persona()
        {
            Nombre = "Persona " + i.ToString(),
            Empresa = "MVA"
        });
    }
    db.SubmitChanges();
}

Consulta de datos

La consulta de datos hacia una base de datos de SQL Server CE usando LINQ para SQL es bastante sencilla si es que ya has utilizado el lenguaje LINQ en tus aplicaciones.  El siguiente fragmento de código muestra el uso del lenguaje LINQ para consultar todas aquellas persona que incluyen en su nombre el número 5.  El resultado de la consulta será la fuente de datos para un control ListBox.

private void ConsultarDatos()
{
    var query = from persona in PersonaDatabase.GetDatabase().Personas
                where persona.Nombre.Contains("5")
                orderby persona.ID
                select persona;

    lista.ItemsSource = query.ToList();
}

 

La siguiente ilustración, muestra la aplicación ejecutando y después de haber consultado los datos según el código anterior.

SNAGHTML261447b

Nota: Para este ejemplo, hice override del método ToString() en la clase Persona para poder mostrar contenido significativo dentro del ListBox, sin necesidad de hacer una Plantilla de Datos; lo cual es altamente recomendable en una aplicación en la vida real, pero no es el enfoque del tema que aquí estamos tratando.

Actualización de datos

Para actualizar los datos de una tabla de la base de datos local en una aplicación, debemos hacerlo igualmente bajo los mecanismos propios de LINQ para SQL, lo cual resulta bastante fácil.

Para demostrar este concepto, al proyecto de prueba he agregado una nueva página llamada Actualizacion.xaml, a la cual se navega después de seleccionar un elemento del ListBox que muestra la lista de personas.  En esta nueva página se incluye un TextBox para cambiar el nombre de la persona seleccionada y finalmente, después de pulsar en el botón “Aceptar” los cambios son guardados de regreso en la base de datos con el siguiente código:

private void Guardar()
{
    persona.Nombre = txtNombre.Text;
    dataContext.SubmitChanges();
}

 

SNAGHTML284a9e2

Es justamente el método SubmitChanges() el único mecanismo por el cual la base de datos es efectivamente actualizada con los cambios.

Nota: El proyecto de ejemplo aquí usado no necesariamente cumple con las mejores prácticas y/o recomendaciones arquitectónicas para una aplicación en producción, sino que únicamente trata de demostrar los conceptos de acceso a bases de datos locales aquí tratados.

Actualización del esquema de la base de datos

Los cambios pueden ocurrir en todo momento y el estar preparados para ello es sumamente importante para poder construir aplicativos robustos, extensibles y de fácil mantenimiento.

La clase DatabaseSchemaUpdater nos permite realizar modificaciones a un esquema pre existente de base de datos, como por ejemplo: modificaciones a las tablas, columnas, índices, claves foráneas y asociaciones, etc.

Método CreateDatabaseSchemaUpdater

El método CreateDatabaseSchemaUpdater del objeto de contexto de datos nos permite hacer las actualizaciones adecuadas al esquema de la base de datos.  Por ejemplo, el siguiente código agrega una nueva tabla al esquema:

var context = new PersonaDataContext(“isostore:/personas.sdf");
var updater = context.CreateDatabaseSchemaUpdater();
updater.AddTable<Producto>();

O tal vez, quisieras agregar una nueva columna a una tabla ya existente:

updater.AddColumn<Persona>("FechaNacimiento");

 

Finalmente, debemos ejecutar el método Execute() para poder realizar los cambios en el esquema de la base de datos:

updater.Execute();

 

Resumen

Windows Phone Mango incluye SQL Server CE, un motor de base de datos relacional para poder almacenar cualquier tipo de cantidad de datos de manera privada en nuestras aplicaciones para el teléfono.  El mecanismo por el cual podemos interactuar con esta base de datos en LINQ para SQL, ya que la ejecución directa de sentencias Transact-SQL no está permitida por motivos de rendimiento.  LINQ para SQL nos permite definir la base de datos y también nos permite realizar las operaciones CRUD necesarias para nuestros aplicativos, lo cual demuestra una vez más lo importante que es comprender y adoptar este moderno lenguaje de consultas.