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

Desarrollo de Aplicaciones para Windows Phone 7.1 @ Microsoft Venezuela (16 y 17 de Febrero 2012)

Posted on : 02-02-2012 | By : Rodrigo | In : Cursos, Eventos, Silverlight, Windows Phone 7.1

Tags: , , , , , , , ,

0

Les invito cordialmente al curso “Desarrollo de Aplicaciones para Windows Phone 7.1”, el cual se llevará a cabo los próximos días 16 y 17 de Febrero 2012 en las oficinas de Microsoft Venezuela en Caracas.  La información completa es la siguiente:

Descripción

Silverlight es una de las plataformas de desarrollo para la nueva versión del sistema operativo móvil Windows PhoneWindows Phone 7.1 el cual cuenta con modernas características en su interfaz de usuario, especificaciones de hardware robustas y consistentes así como también el respaldo de un mercado para aplicaciones en constante crecimiento.

Este curso está enfocado en enseñarte de Windows Phone 7una manera rápida, sencilla y con profundidad técnica la manera de construir aplicaciones móviles con Silverlight para Windows Phone 7.1 y explicar los conceptos fundamentales y mejores prácticas para este tipo de aplicativos incluyendo el patrón de diseño arquitectónico MVVM.

Temario

  • Enlace de Datos
  • Framework de Navegación
  • Almacenamiento Aislado
  • Ciclo de Vida de las Aplicaciones
  • SIP y ámbitos de entrada
  • Barra de Aplicación
  • Ejecutores y Selectores
  • Sensores del teléfono
  • Orientaciones
  • Controles Panorama y Pivot
  • Detección de Conectividad
  • Notificaciones de tipo Push
  • Base de Datos local
  • Multi tasking
  • Agentes en segundo plano
  • Live Tiles
  • Contactos y Calendario
  • El Patrón de Diseño Model-View-ViewModel (MVVM)
  • …y más
  • Material completamente en Español

Audiencia

Desarrolladores profesionales con experiencia mínima de 6 meses en la plataforma de desarrollo .NET y el lenguaje C#

Costo

2464 Bs.F IVA incluido por participante

Fecha y Horario

16 y 17 de Febrero 2012

09:00 a 18:00 horas

Lugar

Microsoft Venezuela

Av. Principal de la Castellana Centro Letonia

Torre ING Bank, Piso 10

Caracas, Venezuela

¿Qué llevar?

¿Cuándo debo pagar?

La fecha límite de pago para participar en el curso será el día 15 de Febrero 2012

¿Cuáles son las formas de pago?

Pago bancario a la siguiente cuenta:

Nombre del banco: Banesco
Cuenta Corriente: 0134-0220-54-2201019535
Nombre del Beneficiario: Widetech Consulting, C.A.
RIF: J-29410398-7
Cuenta en Bolívares Fuertes (Bs.F)

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.  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 para Windows Phone 7.1 (Mango)
  • Material digital completamente en Español
  • Certificado de asistencia

El cupo está limitado, así que si están interesados les sugieron nos escriban para registrarse.

¡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 Windows Phone Mango: Fast Application Switching (FAS)

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

Tags: , , , , ,

0

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: , , , , , ,

0

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.

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

Posted on : 31-10-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Windows Phone 7.1

Tags: , , , , ,

1

Windows Phone Mango incluye SQL Server CE, motor de bases de datos relacionales lo suficientemente pequeña para que ejecute en el teléfono, pero a la vez bastante poderosa como para cubrir todas las necesidades de almacenamiento de datos relacionales para nuestras aplicaciones.  En este artículo hablaremos de cómo crear una nueva base de datos para nuestras aplicaciones de Silverlight para Windows Phone Mango, así como las operaciones CRUD (Create, Read, Update, Delete) básicas.

La necesidad de una base de datos local

SNAGHTML20253b5[4]Hay una gran cantidad de escenarios en donde contar con una base de datos relacional es justamente uno de los requerimientos básicos.  Por ejemplo: el tener catálogos de datos locales que puedan ser utilizados cuando la señal de datos del teléfono se pierda, o un caché local de datos que posteriormente puedan ser sincronizados a un almacenamiento más robusto y persistente (la Nube, por ejemplo) y un largo etcétera.

SQL Server CE en Windows Phone Mango, cubre precisamente ese requerimiento.  Con esto obtenemos una gran cantidad de ventajas, como por ejemplo: tener a nuestro alcance un almacenamiento de datos robusto, el poder crear consultas complejas a dichos datos, no tener que referenciar ensamblados de terceros.  Adicionalmente a esto, todas las operaciones de tipo CRUD son manejadas eficientemente por el mismo motor, además de que contamos con un API consistente. 

Es muy importante mencionar que cada base de datos es privada para cada aplicación, y físicamente es guardada en el Almacenamiento Aislado privado que tiene cada aplicación en Silverlight para Windows Phone Mango, por lo que no es posible (al momento de estar escribiendo este artículo”) tener una base de datos común para varias aplicaciones dentro del teléfono.  También es de suma importancia destacar que SQL Server CE no corre como un servicio en segundo plano dentro del teléfono, sino que correrá únicamente en el mismo proceso que la aplicación que lo invoca.

Mencioné que hay algunas ventajas.  Claro que las hay.  Sin embargo, también hay algunas desventajas:

No se permite Transact-SQL directo

Es común entre los desarrolladores de aplicaciones que tengan que escribir ellos mismos las sentencias CRUD para realizar las operaciones en su base de datos.  En SQL Server CE para Windows Phone Mango no es posible ejecutar consultar Transact-SQL de manera directa.

image

Lo sé.  Para algunas personas, el no tener que escribir sentencias Transact-SQL de manera manual es más bien, una ventaja Smile

No hay un diseñador visual

imageSi deseas crear un esquema para tu base de datos de SQL Server CE en Windows Phone Mango, lo debes hacer exclusivamente vía código.  Cabe mencionar que hay algunos “hacks” que han hecho algunos desarrolladores para convertir un archivo de base de datos a una versión de SQL Server CE de Mango, pero este artículo se basa en los fundamentos del motor y sus posibilidades oficiales.

Pero entonces, si no podemos ejecutar directamente Transact-SQL y tampoco contamos con un diseñador visual para poder crear nuestras bases de datos, sus tablas, sus columnas, etc. ¿cómo lo podemos hacer?

La respuesta a esa pregunta es LINQ para SQL.

LINQ para SQL

LINQ (ojo: se pronuncia LINK, no LINKIÚ como muchas personas escucho que lo hacen) para SQL es un OR/M (Object-Relational Mapper por sus siglas en inglés).  Un OR/M tiene como objetivo en la vida ser un framework que, basándose en un modelo relacional, deriva un modelo de clases y todas las operaciones CRUD pertinentes para ese modelo relacional… y nuestras aplicaciones pueden usar ese modelo de clases directamente sin necesidad de ejecutar explícitamente ni una sola línea del lenguaje SQL que soporte ese motor de base de datos en cuestión.  Eso es precisamente el por qué no es necesario ejecutar directamente cláusulas T-SQL hacia nuestras bases de datos de Windows Phone Mango.

LINQ para SQL es usado en Windows Phone Mango para todas las operaciones CRUD –como mencioné anteriormente-, y también para todas las operaciones de tipo DDL (Data Definition Language), es decir, para la creación del esquema de la base de datos, sus tablas, columnas, claves foráneas, etcétera.

LINQ para SQL está implementado solo de manera parcial en Windows Phone Mango.  Para mayor información consulta esta página.

Luego entonces, nuestras aplicaciones deben hacer uso del lenguaje LINQ, para poder realizar las operaciones hacia la base de datos.  El rol que juega LINQ para SQL es el traducir esas consultas de LINQ hacia Transact-SQL y ejecutarlas en el motor de base de datos.  Cuando la base de datos regrese resultados (por ejemplo, de una consulta) esos datos son traducidos de regreso a objetos que puedas utilizar dentro de tu aplicación.  Esta traducción –de ida y de vuelta- la realiza automáticamente LINQ para SQL sin tu intervención, por lo que la eficiencia al momento de programar se incrementa considerablemente.  Solo es cuestión de acostumbrarse a este paradigma y conocer sus diversas posibilidades.

En la siguiente parte de este artículo veremos cómo programáticamente crear una base de datos nueva dentro de una aplicación de Silverlight para Windows Phone Mango, llenarla de datos, consultar esos datos y actualizarlos.

Anunciando: La Entrevista MVP

Posted on : 22-10-2011 | By : Rodrigo | In : Comunidades, General, La Liga Silverlight, MVP, Noticias, Silverlight

Tags: , , ,

1

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.

En La Liga Silverlight – La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas, nos hemos dado a la tarea de entrevistar a diversas personalidades y líderes de opinión en el ámbito tecnológico de Silverlight quienes nos estarán dando a conocer sus puntos de vista con respecto a este y demás temas.

Les presento: La Entrevista MVP

La Entrevista MVP

micsLa Entrevista MVP es una entrevista (inicialmente por escrito, probablemente hagamos alguna entrevista audiovisual a mediano plazo), con periodicidad mensual, en donde podrán obtener de primera mano los puntos de vista, opiniones y comentarios de varios Profesionales Más Valiosos (MVP) de Microsoft, principalmente de Silverlight.

Hoy en día, es sumamente fácil toparnos con pseudo-periodismo digital, ignorante, mal informado y tendencioso, que lo único que hacen es confundir más a las personas que –erróneamente- los leen o escuchan, por lo que es excelente idea el tener a nuestro alcance las opiniones directas de profesionales que saben verdaderamente de lo que están hablando y que cuentan con información y argumentos privilegiados para opinar, contundentemente, acerca de la tecnología en la que son Expertos.

Las entrevistas estarán disponibles mensualmente (y si es posible, más frecuentemente) en el sitio de La Liga Silverlight y estarán completamente traducidas a nuestro bello idioma.

¿Les gusta la idea?  ¡No se pierdan esta serie, que estará bastante interesante!

Salu2!!!

¿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.

Accediendo a tus ensamblados de .NET desde Silverlight–Parte 2

Posted on : 27-07-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Silverlight 5

Tags: , ,

0

En el artículo anterior, vimos el uso de la clase AutomationFactory para poder crear objetos de tus ensamblados creados con el .NET Framework 4.0, y utilizarlos en Silverlight.

En el ejemplo, invocamos un método como cualquier otro y efectivamente obtenemos los resultados esperados, en este caso, la lista de unidades lógicas del equipo del usuario en donde está ejecutando la aplicación.  Pero ¿qué pasaría si necesitáramos manejar un evento que es disparado por el componente (tu ensamblado) de .NET?  En este caso la implementación debe cumplir con ciertos requisitos.

Atributo ComSourceInterfacesAttribute

Para que podamos exponer un evento en nuestro ensamblado, y que pueda ser manejado por la aplicación de Silverlight a través de automatización, debemos marcar nuestra clase que implementa el evento con el atributo ComSourceInterfacesAttribute, el cual indica una lista de interfaces que contienen los eventos a exponer en dicha clase.

Por lo tanto, en nuestro proyecto necesitamos crear una inteface que tenga la signatura del evento que deseamos exponer y disparar en la clase.  Asimismo, esta inteface debe ser de tipo IDispatch.

En el proyecto, he agregado la interface IInformacion, con la siguiente implementación:

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface IInformacion
{
    void OnGetLogicalDrivesInfo(int count);
}

El método OnGetLogicalDrivesInfo incluye como argumento un int que tendrá el conteo de cuántas unidades físicas han sido encontradas.

Una vez implementada la interface, la clase Informacion la decoramos con el atributo ComSourceInterfacesAttribute, indicando el tipo de interface que la clase expone, en este caso la interface IInformacion que creamos anteriormente:

[ComSourceInterfaces(typeof(IInformacion))]
[ComVisible(true)]
public class Informacion
{
...
}

Ahora bien, debemos implementar un delegado que empate la signatura del método incluido en la interface IINotificacion, y un evento que esté basado en dicho delegado.  Será este evento que el que dispararemos dentro de la clase Notificacion.

public delegate void GetLogicalDrivesInfoEventHandler(int count);

public event GetLogicalDrivesInfoEventHandler OnGetLogicalDrivesInfo;

 

Finalmente, disparamos el evento adecuadamente.  Esto lo estoy haciendo dentro del método GetLogicalDrivesInfo() una vez cargada la lista de unidades lógicas.

if (OnGetLogicalDrivesInfo != null)
{
    OnGetLogicalDrivesInfo(result.Count);
}

 

El ensamblado está listo para recompilarse y re-registrarse.

Clase AutomationEvent

Del lado de la aplicación de Silverlight, necesitamos manejar el evento expuesto por el componente: les presento la clase AutomationEvent.

La clase AutomationEvent representa un evento de automatización.  Necesitamos obtener una referencia del evento OnGetLogicalDrivesInfo, el cual disparará el componente de .NET una vez que hayamos obtenido la lista de todas las unidades lógicas.  Esto lo podemos hacer a través del método GetEvent() de la clase AutomationFactory, indicando primeramente el objeto que incluye el evento, seguido del nombre del evento como tal.  El método GetEvent() nos regresará un objeto de tipo AutomationEvent.

La clase AutomationEvent incluye un evento llamado EventRaised, el cual es disparado como resultado del evento del componente.  En los argumentos del evento EventRaised podremos obtener la lista de argumentos originales.  El siguiente código muestra el manejo del evento OnGetLogicalDrivesInfo, el cual una vez manejado obtenemos el conteo del total de unidades lógicas leídas.

dynamic obj = AutomationFactory.CreateObject("Utilerias.Informacion");

AutomationEvent ev = AutomationFactory.GetEvent(obj, "OnGetLogicalDrivesInfo");
ev.EventRaised += (s, a) =>
{
    MessageBox.Show(string.Format("Total de unidades: {0}", a.Arguments[0]));
};

 

Al ejecutar la aplicación con los cambios que hemos implementado, podremos obtener el valor del argumento del evento que se ha disparado.

SNAGHTML73c811

Accediendo a tus ensamblados de .NET desde Silverlight

Posted on : 27-07-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Silverlight 5

Tags: , ,

4

El BCL (Biblioteca de Clases Base, por sus siglas en inglés) de Silverlight está reducido a comparación del BCL del .NET Framework completo que tenemos instalado en nuestros equipos, por lo que la funcionalidad no es la misma en un aplicativo de Silverlight que alguno construido con el .NET Framework completo.

No obstante, a partir de Silverlight 4, es posible que las aplicaciones de Silverlight sean clientes de automatización cuando ejecutan en Confianza Elevada, esto es, poder invocar los servidores de automatización registrados en el sistema operativo Windows.  Generalmente, la mayoría de ejemplos que podemos encontrar en la Web al respecto de esta característica van por el lado de invocar los servidores de automatización de Office (Outlook.Application o Excel.Application por ejemplo), pero ¿qué sucede si necesitamos invocar funcionalidad ya construida en alguno de nustros ensamblados que hayamos escrito en .NET 4.0?

Ensamblado

En esta solución crearemos dos proyectos, uno de tipo Class Library del .NET Framework 4.0 y otro proyecto será la aplicación de Silverlight.

En el proyecto de la Biblioteca de Clases escribiremos la funcionalidad para obtener la información de todas las unidades lógicas del equipo.  Tradicionalmente, esto lo podemos lograr por medio de la clase DriveInfo del espacio de nombres System.IO, pero justamente esa es una de las clases que no está en el BCL de Silverlight, por lo que crearemos un ensamblado de .NET 4.0 que regrese esa información, y la usaremos en un aplicativo de Silverlight.

La clave para lograr esto es abrir las propiedades del proyecto de la Biblioteca de Clases y seleccionar la opción “Register for COM interop” para poder exponer este ensamblado a través de COM.

image

En el proyecto agregaremos una clase llamada DriveInfo, la cual tendrá las propiedades Name, DriveFormat, TotalSize y TotalFreeSpace de la siguiente manera:

[ComVisible(true)]
public class DriveInfo
{
    public string Name { get; set; }
    public string DriveFormat { get; set; }
    public long TotalSize { get; set; }
    public long TotalFreeSpace { get; set; }
}

Nota cómo se está decorando la clase con el atributo ComVisibleAttribute.  Este atributo indica que este tipo estará disponible a través de COM.

Adicionalmente a esto, agregaremos una clase llamada Información.cs, la cual tendrá el método GetLogicalDrivesInfo() para regresar la información de todas las unidades lógicas del equipo del usuario.  También he agregado el método GetLogicalDrives() para obtener únicamente el nombre de todas las unidades lógicas.  De hecho, también podríamos agregar cualquier funcionalidad necesaria que utilice el .NET Framework 4.0 (métodos, propiedades y eventos).  El siguiente fragmento de código muestra la implementación de la clase Informacion.cs.   Nota cómo también se está decorando con el atributo ComVisibleAttribute.

[ComVisible(true)]
public class Informacion
{
    public DriveInfo[] GetLogicalDrivesInfo()
    {

        var result = new List<DriveInfo>();
        var drives = System.IO.DriveInfo.GetDrives();

        foreach (var item in drives)
        {
            if (true)
            {
                result.Add(new DriveInfo()
                {
                    Name = item.Name,
                    DriveFormat = item.IsReady ? item.DriveFormat : string.Empty,
                    TotalFreeSpace = item.IsReady ? item.TotalFreeSpace : 0,
                    TotalSize = item.IsReady ? item.TotalSize : 0
                });
            }
        }

        return result.ToArray();
    }

    public string[] GetLogicalDrives()
    {
        return System.Environment.GetLogicalDrives();
    }
}

 

Gracias a la opción que habilitamos en las propiedades del proyecto de Silverlight, al compilar el ensamblado este será registrado en el registro de la máquina local con un progID del tipo EspacioDeNombres.Clase, en este caso Utilerias.Información.  Para hacer esto manualmente podrías utilizar la utilería regasm.exe, cuando quisieras registrar el ensamblado en los equipos de tus usuarios.

Nota: necesitarás ejecutar Visual Studio .NET como Administrador, para que al momento de compilar el tipo sea registrado adecuadamente en el Registro de tu equipo.

Proyecto de Silverlight

Del lado del proyecto de Silverlight utilizaremos la clase AutomationFactory y su método CreateObject() para poder crear una referencia al componente con progID Utilerias.Información registrado previamente.

Además de esto, crearemos una clase DriveInfo.cs, igual a la que creamos en el proyecto de la Biblioteca de Clases.  Esto para poder crear un DataTemplate adecuado al presentar la información de las unidades lógicas en un ListBox.

if (AutomationFactory.IsAvailable)
{
    dynamic obj = AutomationFactory.CreateObject("Utilerias.Informacion");

    var drives = obj.GetLogicalDrivesInfo();

    var result = new List<DriveInfo>();

    foreach (var item in drives)
    {
        var driveInfo = new DriveInfo();
        driveInfo.Name = item.Name;
        driveInfo.TotalFreeSpace = item.TotalFreeSpace;
        driveInfo.TotalSize = item.TotalSize;
        driveInfo.DriveFormat = item.DriveFormat;

        result.Add(driveInfo);
    }

    if (result.Count > 0)
    {
        listBox1.ItemsSource = result;
    }
}

 

Nota el uso de los tipos dinámicos (palabra clave dynamic).  Debido a que se basan en Late Binding, no tendremos Intellisense para poder conocer los miembros del tipo en cuestión, por lo que es importante que los nombres correspondan correctamente.

Finalmente, al probar la aplicación te podrás dar cuenta que efectivamente tu aplicación de Silverlight utiliza el ensamblado Utilerias.dll que creamos en el primer paso, usando el .NET Framework 4.0 completo.  A través de AutomationFactory lo accedemos y obtenemos la información de todas las unidades lógicas del equipo.

SNAGHTMLf179f4[5]

Toma en cuenta que el ensamblado que vayas a utilizar, deberá estar registrado previamente en la máquina del usuario (utiliza regasm.exe), de lo contrario AutomationFactory.CreateObject() arrojará una excepción.  Probablemente necesitarás un instalador de prerequisitos antes de instalar y/o ejecutar la aplicación de Silverlight en Confianza Elevada.

¡Espero que les sea de utilidad!

Tutoriales de Desarrollo para Windows Phone–totalmente en español y gratuitos

Posted on : 21-06-2011 | By : Rodrigo | In : Cursos, La Liga Silverlight, MVP, Noticias, Silverlight, Windows Phone 7

Tags: , , , , , , ,

7

windowsphone_logoEn La Liga Silverlight, hemos traducido al idioma español el contenido original de todos los tutoriales para el desarrollo de aplicaciones en Windows Phone, disponibles en App Hub

¡Son un total de 27 tutoriales!

Este material de entrenamiento completamente gratuito y en español te servirá paraLigaSilverlight150x150 iniciar en el mundo de la programación de la nueva versión del sistema operativo móvil de Microsoft: Windows Phone 7, o si ya eres desarrollador para este dispositivo estos tutoriales sin duda alguna te ayudarán a reforzar tus conocimientos.

Cada tutorial trata un tema específico, por lo que no están vinculados directamente uno con otro pero definitivamente les recomiendo que los sigan en el orden establecido.  Los tutoriales comienzan con temas básicos de XAML y Silverlight, y posteriormente se van analizando conceptos más a detalle acerca de esta plataforma de desarrollo.

La lista completa de tutoriales es la siguiente:

Iniciando y Fundamentos

  1. Empezar a crear una aplicación de Windows Phone
  2. Creando la interfaz de usuario de Windows Phone (XAML)
  3. Usando controles
  4. Tipo de Controles
  5. Controles Panorama y Pivot
  6. Trabajando con texto en Windows Phone
  7. Distribución en la pantalla
  8. Orientaciones de la pantalla
  9. Entrada táctil
  10. Navegación
  11. Ejecutando un aplicación en segundo plano (tombstoning)
  12. Notificaciones de empuje para el desarrollo de Windows Phone
  13. Publicando tu aplicación en el Marketplace

Visuales y Medios

  1. Imágenes
  2. Animaciones
  3. Video y Audio
  4. Gráficos
  5. Brochas

Trabajando con Datos

  1. Obteniendo datos en tus aplicaciones de Windows Phone
  2. Enlazando a controles
  3. Almacenamiento Aislado
  4. Accediendo a un servicio web REST
  5. Consumiendo el servicio de datos de Windows Azure utilizando el cliente OData

Sensores y otras características específicas del teléfono

  1. Lanzadores y Selectores
  2. Detección de movimiento (acelerómetro)
  3. Desarrollando con el GPS de Windows Phone (Servicios de Ubicación)
  4. Desarrollando con la cámara de Windows Phone

También pueden ver el índice completo en esta página de La Liga Silverlight.

¡Esperamos que les sean de utilidad!

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!