consumo de datos

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

Upload: richard-villalba

Post on 01-Jan-2016

8 views

Category:

Documents


0 download

DESCRIPTION

Consumo de Datos

TRANSCRIPT

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?