Consumiendo una Web API desde una aplicación de la Plataforma Universal de Windows

En esta guía, describiremos los pasos necesarios para consumir una Web API a través de una aplicación UWP.  La aplicación será desarrollada implementado el patrón MVVM.

El siguiente enunciado describe el objetivo de la aplicación que realizaremos.

“Desarrollar una aplicación UWP que permita generar un código de invitación para participar en el entrenamiento Windows 10 Developer Readiness. La aplicación deberá solicitar el Nombre, Apellidos y Correo electrónico de la persona interesada y una vez que los datos sean proporcionados, la aplicación proporcionará a la persona interesada un código con el cual podrá participar en el entrenamiento.

Para obtener el código de invitación, la aplicación enviará los datos proporcionados por el usuario a una Web API, la Web API devolverá como respuesta el código de invitación.”

Requisitos:

Al momento de realizar esta guía, las versiones finales de Windows 10 y Visual Studio 2015 no se han liberado, por lo tanto, utilizaremos lo siguiente:

  • Windows 10 Insider Preview Build 10130. Únete al Programa Windows Insider que ofrece información privilegiada. Sigue las instrucciones para instalar Windows 10 Insider Preview en el siguiente enlace: http://insider.windows.com/

  • Microsoft Visual Studio 2015 RC. El SDK de Windows 10 y todas las herramientas, emuladores, bibliotecas, encabezados y otros archivos que necesitas para desarrollar aplicaciones para Windows 10 se incluyen en esta versión de Visual Studio. También se incluye una versión actualizada del Kit para la certificación de aplicaciones en Windows. No es necesario descargar ninguna otra herramienta para desarrollar aplicaciones para Windows 10.  Sigue las instrucciones del Programa Windows Insider para instalar las herramientas de desarrollo de Windows 10 para Visual Studio 2015 RC en el siguiente enlace: https://go.microsoft.com/fwlink/p/?LinkId=534785
  • Plantilla Template 10 Blank.  Esta es una plantilla exportada de un proyecto de Visual Studio y forma parte del proyecto Template 10. Se recomienda el uso de la plantilla Blank como base para el desarrollo de aplicaciones UWP ya que proporciona implementaciones importantes de muchos de los Patrones, entre ellos MVVM, necesarios para construir aplicaciones UWP ricas y fáciles de mantener. Para obtener la versión más reciente de esta plantilla puedes acceder al repositorio Git en la dirección: http://aka.ms/template10. La versión que utilizaremos en esta guía puedes descargarla en el siguiente enlace: Blank.

Tarea 1: Instalar la plantilla Template 10 Blank 

  1. Abre una ventana del Explorador de Archivos de Windows y navega a This PC > Documents > Visual Studio 2015 > Templates > ProjectTemplates > Visual C#.
  2. Crea una nueva carpeta llamada Template10.
  3. Abre la carpeta Template10 y copia ahí el archivo Blank.zip.
  4. Para verificar que la plantilla se haya instalado correctamente, abre Visual Studio 2015.
  5. Crea un nuevo proyecto utilizando la plantilla Blank. La plantilla se encontrará en el nodo Installed > Templates > Visual C# > Template10.

image

Tarea 2: Crear el Modelo de la aplicación

  1. La Web API que consumiremos recibe los datos a través de un objeto Student. Agrega la siguiente clase Modelo en la carpeta Models de la aplicación.

  2. public class Student
    {
        public string FirstName { get; set; } = string.Empty;
        public string LastName { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
    }

  3. La Web API que consumiremos devuelve el código de invitación a través de un objeto Token. Agrega la siguiente clase Modelo en la carpeta Models de la aplicación.
  4. public class Token
    {
        public string Value { get; set; } = string.Empty;
    }

  5. El código de acceso a datos lo pondremos en una clase Modelo que servirá de repositorio. Agrega la siguiente clase Modelo en la carpeta Models de la aplicación.
  6. public static class Repository
    {
    }

  7. En la clase Repository agregaremos un método con el código para invocar a la Web API y obtener el código de invitación.  Agrega el siguiente código para importar el espacio de nombres que tiene la clase HttpClient. A través de esta clase consumiremos la Web API.

    using System.Net.Http;

  8. La Web API recibe y devuelve el resultado en formato JSON. Para poder serializar y Deserializar la información, utilizaremos la clase JsonConvert disponible en el Framework Newtonsoft.Json. Agrega a la aplicación, la referencia al paquete NuGet Newtonsoft.Json.

    image

  9. Agrega a la clase Repository el siguiente código para importar el espacio de nombres que define la clase JsonConvert.

    using Newtonsoft.Json;

  10. Agrega el siguiente código a la clase Repository para definir el método GetToken que enviará los datos a la Web API y devolverá el Código de Invitación que obtendrá como respuesta de la llamada a la Web API.
  11. public static string GetToken(Student data)
    {
        string Token = null;

        // Definir el URL de la aplicación Web API
        string URLWebAPI = “http://mvdemos.cloudapp.net/Win10/ “;

        // Crear un objeto HttpClient para acceder a la Web API
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URLWebAPI);

        // Especificar que estamos aceptando datos JSON
        client.DefaultRequestHeaders.Accept.Add(
            new System.Net.Http.Headers.
            MediaTypeWithQualityHeaderValue(“application/json”));

        // Serializar los datos del estudiante a formato JSON
        string StudentJSON = JsonConvert.SerializeObject(data);

        // Obtener un tipo HttpContent para pasarlo en la petición
        StringContent Content = new StringContent(StudentJSON,
            System.Text.Encoding.UTF8, “application/json”);

        // Realizar la llamada al recurso Web API y obtener la respuesta
        HttpResponseMessage response = client.PostAsync(
            “api/Win10Dev”, Content).Result;

        // Verificar si la respuesta fue exitosa
        if (response.IsSuccessStatusCode)
        {
            // Deserializar el resultado obtenido
            Token token =
                JsonConvert.DeserializeObject<Token>(
                    response.Content.ReadAsStringAsync().Result);
            // Obtener el valor del código de invitación
            Token = token.Value;
        }
        else
        {
            // La respuesta no fue exitosa. Devolver el estatus de error.
            Token = string.Format(“{0} ({1})”,
                response.StatusCode, response.ReasonPhrase);
        }
        return Token;
    }

Tarea 3: Definir el ViewModel de la aplicación

  1. Abre el archivo ViewModels\MainPageViewModel.cs.
  2. Importa el espacio de nombres de la carpeta Models.
  3. Modifica la clase MainpageViewModel para definir el ViewModel de la aplicación. La clase deberá ser similar a la siguiente.
  4. public class MainPageViewModel : Mvvm.ViewModelBase
    {
        public Student Student{ get; set; }= new Student();

        private string _Token = string.Empty;
        public string Token { get { return _Token; } set { Set(ref _Token, value); } }

        public void Send()
        {
            Token = Repository.GetToken(Student);
        }
    }

Tarea 4: Definir la Vista de la aplicación

  1. Abre el archivo Views\MainPage.xaml.
  2. En la vista XAML, remplaza el contenido del control RelativePanel para que quede de la siguiente forma.
  3. <RelativePanel Padding=”12,0,0,0″ Grid.Row=”1″
                          MaxWidth=”900″ HorizontalAlignment=”Center”>
               <Image x:Name=”Image” Source=”/Images/Windows10.PNG” MaxWidth=”900″ Margin=”10″ />
               <TextBox x:Name=”FirstName”  Margin=”10″
                        Header=”Nombre:” Width=”200″ 
                    Text=”{x:Bind ViewModel.Student.FirstName, Mode=TwoWay}”
                                RelativePanel.Below=”Image” />

               <TextBox x:Name=”LastName” Margin=”10″
                        Header=”Apellidos:” Width=”200″
                        Text=”{x:Bind ViewModel.Student.LastName, Mode=TwoWay}”
                        RelativePanel.Below=”FirstName”/>

               <TextBox x:Name=”Email” Margin=”10″
                        Header=”Correo Electrónico” Width=”300″
                        Text=”{x:Bind ViewModel.Student.Email, Mode=TwoWay}”
                        RelativePanel.Below=”LastName”/>

               <Button x:Name=”Send” Margin=”10″
                       Content=”Solicitar código”
                           Click=”Send_Click”   
                           RelativePanel.Below=”Email”
                           Background=”#0080FF” Foreground=”white”/>

               <TextBox x:Name=”Token” Margin=”10″
                        Header=”Código de invitación” Width=”300″
                        Text=”{x:Bind ViewModel.Token, Mode=TwoWay}”
                        RelativePanel.Below=”Send”
                         />
           </RelativePanel>

  4. Examina detenidamente el código XAML agregado .
    El código está utilizando un nuevo tipo de enlace conocido como Compiled Binding. Este nuevo tipo de Enlace requiere que las propiedades que se están enlazando se encuentren definidas en la clase MainPage, en otras palabras, en el code-behind. Abre el archivo code-behind MainPage.xaml.cs.
  5. Localiza la siguiente línea de código en el constructor de la clase.

    DataContextChanged += (s, e) => ViewModel = DataContext as MainPageViewModel;

    Este código, almacena en la propiedad ViewModel definida líneas más abajo en el mismo archivo, el valor del Contexto de Datos (una instancia del ViewModel) para permitir el enlace a datos compilado.

  6. En la clase MainPage, agrega el siguiente código para invocar al método Send definido en el ViewModel cuando el usuario dé Clic en el botón “Solicitar código”.
  7. private void Send_Click(object sender, RoutedEventArgs e)
    {
        ViewModel.Send();
    }

  8. Compila y ejecuta la aplicación.
    Deberá mostrarse la aplicación similar a la siguiente.

    image

  9. Proporciona tu Nombre, Apellidos, Correo y da clic en Solicitar código.
    Te será mostrado el código de invitación.

    image

Con este paso hemos finalizado la creación de la aplicación. Espero les sea útil.

 

 

 

   

 

Publicado en C#, Universal Windows Platform, UWP, Windows 10 | Deja un comentario

Nubes Administradas

Una nube administrada nos permite emplear la potencia de su infraestructura de Cómputo para resolver nuestras necesidades y cumplir con nuestros objetivos comerciales sin la frustración, el costo y el tiempo que consume administrar los servicios nosotros mismos.

Una Nube administrada pone a nuestra disposición toda su infraestructura de Cómputo pero lo más valioso es que además la administra por nosotros. El valor real de una Nube Administrada es el soporte que recibimos a través de sus recursos humanos que pueden asesorarnos y apoyarnos a implementar y administrar nuestras aplicaciones en la Nube.

Hoy en día hay cada vez más oportunidades para implementar soluciones en la Nube.

Experimenta una Nube Administrada

Si estás pensando seriamente en implementar una solución en la Nube y necesitas asesoría y apoyo, puedes aprovechar la oferta que tiene Rackspace para experimentar la Nube Administrada.

Rackspace tiene un programa de apoyo que ofrece $250 dólares durante 4 meses para que puedas tener acceso a los productos de su nube pública y lo mejor de ello es que te proporciona acceso completo a su Soporte Fanático (Fanatical Support) las 24 horas del día, los 7 días de la semana durante todo el año.

Conoce más de este programa en la siguiente dirección: http://go.rackspace.com/latam_trials_qualification.html

¡Saludos!

Publicado en Cloud Computing | Deja un comentario

¿Microsoft Azure o Rackspace?

Para entrar un poco en contexto sobre el título de este artículo, debo comentarles que desde el año 2010 he estado trabajando con los servicios que ofrece la nube pública de Microsoft llamada Azure y recientemente desde el año pasado he estado explorando los servicios que ofrece Rackspace.

La pregunta típica que me hice y que me han hecho algunas personas es ¿Quién es mejor, Microsoft Azure o Rackspace?

La respuesta a esta pregunta puede ser distinta dependiendo de las necesidades de cada empresa o negocio.

Microsoft Azure ofrece una amplia gama de tecnologías disponibles en sus centros de datos y listas para poder ser utilizadas. Adicionalmente, Microsoft Azure proporciona soporte técnico cuando es requerido.

Rackspace ofrece soluciones a las necesidades de las empresas. Para Rackspace las tecnologías de cómputo en la nube son importantes pero es más importante hacer un uso correcto y apropiado de esas tecnologías para ayudar a resolver las necesidades de negocio.

Microsoft Azure es recomendable para negocios que requieran ellos mismos administrar los servicios de cómputo en la nube que ofrece Azure. Esto requiere de un buen nivel técnico de conocimientos por parte de las empresas para hacer un uso correcto y apropiado de los recursos. En cualquier momento, pueden solicitar el apoyo del personal de soporte de Microsoft Azure.

Rackspace es recomendable para negocios que no requieran, por ellos mismos, administrar los servicios de cómputo en la nube y dejan que el personal capacitado de soporte (conocidos como Rackers) lo haga por ellos. Esto permite el uso correcto y apropiado de los recursos de la nube de cómputo y permite que las empresas se enfoquen principalmente en resolver sus necesidades de negocio sin preocuparse por cuestiones de manejo de la infraestructura de cómputo.

En pocas palabras, cuando contratas Microsoft Azure, contratas servicios e infraestructura de cómputo. Adicionalmente puedes obtener la ayuda del personal de soporte técnico.

Cuando contratas Rackspace, contratas al personal de soporte técnico para que te ayude a crear soluciones con sus servicios e infraestructura de cómputo.

Si te interesa que alguien te administre tu infraestructura de cómputo en la nube para que tú puedas enfocarte únicamente en resolver las necesidades propias de tu negocio, piensa en Rackspace.

Si te interesa utilizar y administrar los servicios de cómputo en la nube además de resolver las necesidades propias de tu negocio, piensa en Microsoft Azure.

¿Qué me gusta de Microsoft Azure? Que la mayor parte de sus productos están diseñados para utilizarse muchas veces sin la necesidad de soporte técnico. Un desarrollador de tecnologías Microsoft puede beneficiarse de todas las herramientas Microsoft que se integran perfectamente para desarrollar aplicaciones diseñadas específicamente para la nube.

¿Qué me gusta de Rackspace? El soporte fanático (Fanatical Support) que me da la seguridad de que ante cualquier problema que se escape de mis habilidades tecnológicas, siempre habrá alguien que me ayude a solucionarlo o incluso recomendarme la solución tecnológica más apropiada de acuerdo a mis necesidades. Varios Microsoft MVPs forman parte del grupo de Rackers que dan soporte a productos Microsoft que Rackspace ofrece a sus clientes.

Rackspace y Microsoft tienen una asociación de larga duración hospedando aplicaciones empresariales. Rackspace, ha sido nombrado en cuatro ocasiones como Mejor socio de hospedaje del año de Microsoft ya que proporciona Fanatical Support a más de 10 mil instancias de cómputo que ejecutan Microsoft SQL Server.

Cuando pienso en Microsoft Azure lo relaciono con productos y servicios en la nube respaldados por expertos.

Cuando pienso en Rackspace lo relaciono con expertos ayudándote a administrar los productos y servicios en la nube.

Después de esto que acabo de exponer, viene a mi mente la cuestión de las suscripciones de prueba (Trial).

En una suscripción de prueba, Microsoft Azure te proporciona gratuitamente el uso de un grupo de productos mientras que Rackspace te proporcionaría gratuitamente el tiempo de un grupo de personas. ¿Qué será más caro, el tiempo de un grupo de productos o el tiempo de un grupo de personas? Si entramos al sitio de Microsoft Azure lo primero que saltará a la vista es la oferta de suscripciones de prueba, cosa que no sucede con Rackspace.

Puedo enumerar más características de ambas nubes, sin embargo, no quiero hacer tediosa la lectura Sonrisa

Vale la pena comentar que las opiniones plasmadas en este artículo son personales y que acepto las correcciones y comentarios que mis amigos de Microsoft Azure y Rackspace puedan hacer.

Les dejo aquí algunos enlaces que pueden ayudar a complementar lo que escribo aquí.

Sitio de Microsoft Azure

Sitio de Rackspace

¿Qué es la Nube Todo Incluido (Managed Cloud)?

Cinco razones por las que Rackspace hace que la adopción de MSSQL 2014 y la funcionalidad en memoria sea un proceso sencillo

Publicado en Varios | 5 comentarios

Información general sobre Windows Azure

Para aquellas personas interesadas en conocer acerca de Cómputo en la Nube (Cloud Computing) y Windows Azure, les dejo aquí unos videos donde se presenta información que puede serles de utilidad.
Contenido

¿Qué es la Nube?

Definición de Cómputo en la nube  (Cloud Computing)

Tipos de servicios de Cómputo en la Nube

¿Qué es Windows Azure?

Categorías de servicios Windows Azure

Publicado en Entrenamiento, Windows Azure | 1 comentario

Modulo 1: Introducción al desarrollo de aplicaciones Windows Phone 8

Les dejo aquí el contenido del Módulo 1 del Entrenamiento Windows Phone 8 con Visual C#
La presentación del entrenamiento pueden encontrarla dando clic aquí.

Modulo 1: Introducción al desarrollo de aplicaciones Windows Phone 8

Publicado en C#, Entrenamiento, Windows Phone | 3 comentarios

Entrenamiento Windows Phone 8 con Visual C#

En el año 2013, tuve la oportunidad de crear contenido para un entrenamiento de Windows Phone 8 que se impartió en línea en el aula virtual de TI Capacitación como una iniciativa de AppUniversity.  Aunque la versión actual de Windows Phone es la 8.1, el entrenamiento puede ser útil para quienes deseen iniciar su aprendizaje en el desarrollo de aplicaciones para Windows Phone. Para las personas que me han preguntado sobre este entrenamiento, a partir de esta entrada de blog y en entradas posteriores, iré publicando el contenido del entrenamiento esperando que sea de utilidad para la personas interesadas.

Vale la pena comentar que en el sitio Microsoft Virtual Academy, también pueden encontrar recursos de aprendizaje para desarrollo de aplicaciones Windows Phone.

Siéntanse con la confianza de plantear sus dudas en este mismo blog.

Les dejo aquí la presentación del entrenamiento.

Presentación

En este video se realiza la presentación del curso Desarrollo de Apps para Windows phone 8

 

Audiencia

En este video se describe la audiencia a la que está dirigida este entrenamiento

 

Objetivos

En este video se describen los objetivos del curso

 

Requerimientos

En este video se describen los requerimientos para aprovechar de manera apropiada este entrenamiento.

 

Contenido del curso

En este video se describe el contenido del curso

 

Modulo 1: Introducción al desarrollo de aplicaciones Windows Phone 8

Publicado en C#, Entrenamiento, Windows Phone | 7 comentarios

Proyecto Génesis – Para principiantes en la programación de Computadoras

¿Eres principiante en el mundo de la programación?

¿Deseas iniciar una carrera profesional como desarrollador de software?

¿Te interesa saber qué es exactamente la Programación de Computadoras?

¿Te interesa evaluar tus conocimientos para lograr la certificación “Microsoft Technology Associate (MTA) Principios básicos de TI”?

Únete al grupo de estudio del Proyecto Génesis participando en sesiones de Live Meeting los días Lunes, Martes, Miércoles y Jueves a partir de las 21 horas tiempo de la ciudad de México.

Iniciamos 20 de Marzo de 2014 a las 21 horas. Puedes registrarte en la siguiente dirección: http://ticapacitacion.com/registro/genesis

Las sesiones son totalmente gratuitas y forman parte de las acciones de apoyo como MVP Mentor.

Publicado en C#, Entretenimiento | Deja un comentario