12
Diplomado de Windows Phone 8 devmasters.com.mx Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 1 Módulo 4: Consumo de Datos WebClient devmasters.com.mx WebClient Clase de uso sencillo para comunicaciones HTTP Soporta GET y POST únicamente Usa el paradigma de programación basada en eventos Regresa los resultados en el hilo de la IU

Consumo de Datos

Embed Size (px)

DESCRIPTION

Consumo de Datos

Citation preview

Page 1: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 1

Módulo 4:

Consumo de Datos

WebClient

devmasters.com.mx

WebClient

� Clase de uso sencillo para comunicaciones HTTP

� Soporta GET y POST únicamente

� Usa el paradigma de programación basada en eventos

� Regresa los resultados en el hilo de la IU

Page 2: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 2

devmasters.com.mx

WebClient

�Miembros

� BaseAddress

� DownloadProgressChanged

� Regresa los datos en el hilo de la IU

HTTP GET

• DownloadStringAsync

• OpenReadAsync

HTTP POST

• UploadStringAsync

• OpenWriteAsync

devmasters.com.mx

WebClient

� Método DownloadStringAsync

� Descarga como texto plano el Uri especificado

� Es asíncrono

WebClient client = new WebClient();

client.DownloadStringCompleted += (s, a) =>

{

if (a.Error == null && !a.Cancelled)

{

string result = a.Result;

//Interpreta el resultado

}

};

client.DownloadStringAsync(new Uri("http://whc.unesco.org/en/list/rss", UriKind.Absolute));

devmasters.com.mx

WebClient

� Método OpenReadAsync

� Abre el Uri especificado como un Stream de lectura

� Es asíncrono

WebClient client = new WebClient();

client.OpenReadCompleted += (s, a) =>

{

if (a.Error == null && !a.Cancelled)

{

Stream result = a.Result;

//Interpreta el resultado

}

};

client.OpenReadAsync(new Uri("http://upload.wikimedia.org/wikipedia/en/d/db/Silverlight.png",

UriKind.Absolute));

Page 3: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 3

devmasters.com.mx

WebClient

� Propiedad BaseAddress

� Establece el Uri base para todas las peticiones en el WebClient

WebClient client = new WebClient();

client.BaseAddress = @"http://upload.wikimedia.org";

client.OpenReadCompleted += (s, a) =>

{

if (a.Error == null && !a.Cancelled)

{

Stream result = a.Result;

//Interpreta el resultado

}

};

client.OpenReadAsync(new Uri("/wikipedia/en/d/db/Silverlight.png", UriKind.Relative));

devmasters.com.mx

WebClient

� DownloadProgressChanged

� Se dispara cuando los datos son transferidos asíncronamente

WebClient client = new WebClient();

client.DownloadProgressChanged += (s, a) =>

{

textBlock1.Text =

a.BytesReceived.ToString();

};

devmasters.com.mx

WebClient

� OpenWriteAsync

� Abre un Stream para escritura

WebClient client = new WebClient();

client.OpenWriteCompleted += (s, a) =>

{

if (a.Error == null && !a.Cancelled)

{

Stream result = a.Result;

StreamWriter writer = new StreamWriter(result);

writer.WriteLine("Prueba");

writer.Close();

}

else

{

MessageBox.Show(a.Error.ToString());

}

};

client.OpenWriteAsync(new Uri("/Handler1.ashx", UriKind.RelativeOrAbsolute));

Page 4: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 4

devmasters.com.mx

WebClient

� Headers

� Permite establecer los headers para la petición

� Algunos headers están restringidos

Demo: WebClient

HttpClient Portable

Page 5: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 5

devmasters.com.mx

HttpClient Portable

� API más simple y moderna de comunicación para aplicaciones� Más intuitiva

� Los métodos que expone son los verbos del protocolo HTTP� Asíncrona por medio de async/await� Disponible para:

� .NET Framework 4.5/4.0

� Aplicaciones Metro de Windows 8� Windows Phone 7.1

� Windows Phone 8

� Bibliotecas de Clases Portables

devmasters.com.mx

HttpClient Portable

� Permite reutilizar la lógica de comunicaciones entre aplicaciones de Windows Phone 8 y Windows 8

Lógica de comunicación

Windows Phone 8 Windows 8

Demo: HttpClient Portable

Page 6: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 6

HttpWebRequest / HttpWebResponse

devmasters.com.mx

HttpWebRequest / HttpWebResponse

� Te permiten tener más control en la comunicación

� Por ejemplo: cambiar el response, los headers, el StatusCode, el

ContentType y el Stream

� Regresa los datos en un hilo secundario, no en el de la IU

� Podemos usar el objeto Dispatcher para comunicarnos al hilo de la IU

� Puedes usar el modelo tradicional de programación asíncrona con IAsyncResult

devmasters.com.mx

HttpWebRequest / HttpWebResponseHttpWebRequest req = HttpWebRequest.CreateHttp(new Uri("http://localhost:3398/Handler1.ashx",

UriKind.Absolute)); req.Method = "POST";

req.ContentType = "text/plain";

req.BeginGetRequestStream(result =>

{

var requestStream = req.EndGetRequestStream(result);

requestStream.Close();

req.BeginGetResponse(r =>

{

var response = (HttpWebResponse)req.EndGetResponse(r);

using (Stream stream = response.GetResponseStream())

{

using (StreamReader reader = new StreamReader(stream))

{

string responseString = reader.ReadToEnd();

Dispatcher.BeginInvoke(() => textBlock1.Text = responseString);

reader.Close();

}

stream.Close();

}

}, null);

}, null);

Page 7: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 7

Demo: HttpWebRequest / HttpWebResponse

Comunicación a Servicios WCF

devmasters.com.mx

Comunicación a Servicios WCF

� Opciones

� Agregar Referencia al Servicio

� Clase ChannelFactory

� Clase ClientBase

Page 8: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 8

devmasters.com.mx

Comunicación a Servicios WCF

� Los proyectos de Windows Phone 8

soportan “Agregar Referencia a Servicio"

� Funciona con Servicios

ASMX y WCF

� Visual Studio genera las clases Proxy y DataContract

devmasters.com.mx

Comunicación a Servicios WCF

� Todas las comunicaciones son asíncronas

� Al agregar la referencia al Servicio se creará la clase Proxy

� Los métodos en las clases Proxy y DataContract tendrán el fijo «Async»ServiceReference1.EjemploSoapClient client = new

ServiceReference1.EjemploSoapClient();

client.SaludaCompleted += (s, a) =>

{

if (a.Error == null && !a.Cancelled)

{

MessageBox.Show(a.Result);

}

};

client.SaludaAsync(textBox1.Text);

devmasters.com.mx

Comunicación a Servicios WCF

� Al agregar la referencia del Servicio, se creará automáticamente el archivo de configuración

<configuration>

<system.serviceModel>

<bindings>

<basicHttpBinding>

<binding name="EjemploSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">

<security mode="None" />

</binding>

</basicHttpBinding>

</bindings>

<client>

<endpoint address="http://localhost:6090/Ejemplo.asmx" binding="basicHttpBinding"

bindingConfiguration="EjemploSoap" contract="ServiceReference1.EjemploSoap"

name="EjemploSoap" />

</client>

</system.serviceModel>

</configuration>

Page 9: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 9

devmasters.com.mx

Comunicación a Servicios WCF

� La instancia del Proxy utilizará la configuración predeterminada

� De manera opcional, podemos establecer el tipo de Binding y EndpointAddress

� Para escenarios de direcciones dinámicas

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new

EndpointAddress("http://api.bing.net:80/soap.asmx");

client = new Bing.BingPortTypeClient(binding, address);

devmasters.com.mx

Comunicación a Servicios WCF

� Puedes tener tus propias clases de Modelo

� Puedes utilizar LINQ para proyectar

� Permite una independencia entre las diferentes capas

Demo: Comunicación a Servicios WCF

Page 10: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 10

Comunicación a Servicios REST

devmasters.com.mx

Comunicación a Servicios REST

� REREREREpresentational SSSState TTTTransfer (REST)

� Exponen una estructura de tipo URI� Las operaciones CRUD están mapeadas a los métodos HTTP:

� POST: Crear

� GET: Leer

� PUT: Actualizar

� DELETE: Borrar

� No guardan el estado� El formato de datos es texto plano

� JSON o XML

devmasters.com.mx

Comunicación a Servicios REST

� Opciones

� HttpClient

� HttpWebRequest / HttpWebResponse

� WebClient

� WCF Data Services

� Exponen un modelo de entidades como un servicio REST

Page 11: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 11

Demo: Comunicación a Servicios REST

Windows Azure Mobile Services

devmasters.com.mx

Mobile Services

� Almacenamiento en la

nube para aplicaciones móviles de Azure

� Permite escribir lógica del lado del servidor

� Multi-plataforma

� …y más!

� Prueba de 1 mes gratuita:

http://www.windowsazure.com/en-us/pricing/free-trial/

Page 12: Consumo de Datos

Diplomado de Windows Phone 8 devmasters.com.mx

Este documento se distribuye con una licencia de tipo Atribución-CompartirIgual 3.0 Unported. Para más información consulta http://creativecommons.org/licenses/by-sa/3.0/deed.es

Microsoft, el logo .NET, Silverlight, Visual Studio, Expression Blend, Expression Studio, ASP.NET, SharePoint y Windows Phone son marcas registradas del grupo de compañías Microsoft. 12

Demo: Windows Azure Mobile Services

Resumen

¿Preguntas?