+ All Categories
Home > Technology > Interagire con la Rete

Interagire con la Rete

Date post: 20-May-2015
Category:
Upload: microsoft-mobile-developer
View: 466 times
Download: 3 times
Share this document with a friend
Description:
Una delle caratteristiche principali degli smartphone è la presenza di connettività: lo scopo di questo webinar è mostrare i meccanismi messi a disposizione dall'SDK per effettuare le operazioni di rete più comuni, come il download e l'upload di file o l'interazione con servizi REST Interagire con la rete: download e upload, utilizzo di servizi. / Many of the key benefits of smartphones come through connectivity. This webinar will explain the mechanisms provided by the SDK to perform the most common network tasks, such as downloading and uploading of files or interaction with RESTful services.
Popular Tags:
29
INTERAGIRE CON LA RETE Matteo Pagani Nokia Developer Champion Microsoft MVP – Windows Phone Development Software Engineer @ Funambol ITALIAN WEBINAR #4
Transcript
Page 1: Interagire con la Rete

INTERAGIRE CON LA RETE

Matteo Pagani

Nokia Developer Champion

Microsoft MVP – Windows Phone Development

Software Engineer @ Funambol

ITALIAN WEBINAR #4

Page 2: Interagire con la Rete

AGENDA

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

• Determinare la connessione • Upload e download di file • Background transfer • Interagire con i servizi

Page 3: Interagire con la Rete

CONNETTIVITA’

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 4: Interagire con la Rete

• E’ importante verificare la presenza di connettività prima di interagire con la rete

• La classe DeviceNetworkInformation nel namespace Microsoft.Phone.Net.NetworkInformation permette di accedere alle informazioni sulla connettività

• Connessioni dati attive, connettività a Internet, informazioni sull’operatore

• Possibilità di sottoscriversi all’evento NetworkAvailabilityChanged, che viene scatenato ogni qualvolta cambia lo stato della connessione

CONNETTIVITA’

10/15/2013 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 5: Interagire con la Rete

CONNETTIVITA’ Demo

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 6: Interagire con la Rete

INTERAGIRE CON LA RETE

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 7: Interagire con la Rete

• L’SDK di Windows Phone include due classi native per interagire con la rete:

• WebClient

• HttpWebRequest

• Nessuna delle due supporta, in modo nativo, l’approccio async e await

• Hanno entrambe diversi limiti che ne rendono complicato l’utilizzo

INTERAGIRE CON LA RETE

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 8: Interagire con la Rete

private async void OnDownloadStringClicked(object sender, RoutedEventArgs e)

{

WebClient client = new WebClient();

client.DownloadStringCompleted += client_DownloadStringCompleted;

client.DownloadStringAsync(new Uri("url"));

}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

{

if (e.Error == null)

{

MessageBox.Show(e.Result);

}

}

WEBCLIENT

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

UI Thread

Page 9: Interagire con la Rete

private void OnDownloadStringClicked(object sender, RoutedEventArgs e)

{

webRequest = HttpWebRequest.CreateHttp("url");

webRequest.Method = "GET";

webRequest.BeginGetResponse(new AsyncCallback(ResponseCallback), webRequest);

}

private void ResponseCallback(IAsyncResult asyncResult)

{

HttpWebResponse webResponse = (HttpWebResponse)webRequest.EndGetResponse(asyncResult);

Stream stream = webResponse.GetResponseStream();

using (StreamReader reader = new StreamReader(stream))

{

string result = reader.ReadToEnd();

MessageBox.Show(result);

}

}

HTTPWEBREQUEST

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 10: Interagire con la Rete

• Il Windows Runtime ha introdotto una nuova classe: HttpClient

• Per Windows Phone è disponibile come pacchetto su NuGet: http://www.nuget.org/packages/Microsoft.Net.Http/

• E’ utilizzabile anche nelle Portable Class Libraries

• Espone un metodo asincrono per ogni comando del protocolo HTTP:

• PostAsync()

• PutAsync()

• GetAsync()

• DeleteAsync()

WELCOME HTTPCLIENT

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 11: Interagire con la Rete

HttpClient client = new HttpClient();

Stream stream = await client.GetStreamAsync(“url");

HttpClient client = new HttpClient();

string result = await client.GetStringAsync(“url");

DOWNLOAD

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 12: Interagire con la Rete

private async void OnSendPostClicked(object sender, RoutedEventArgs e)

{

HttpClient client = new HttpClient();

client.BaseAddress = new Uri("http://192.168.0.12:4484");

Stream stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("image.png");

StreamContent content = new StreamContent(stream);

var result = await client.PostAsync("/api/values", content);

}

UPLOAD

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 13: Interagire con la Rete

HTTPCLIENT Demo

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 14: Interagire con la Rete

BACKGROUND TRANSFER

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 15: Interagire con la Rete

• Le classi viste in precedenza funzionano solo se l’applicazione è in uso

• Se l’applicazione viene sospesa, il trasferimento viene terminato

• API introdotte in Windows Phone 7.5 per effettuare operazioni di download e upload in grado di proseguire in background

• Al centro l’utente: vincoli da rispettare per evitare l’eccessivo consumo di batteria e il degrado delle performance

BACKGROUND TRANSFER

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 16: Interagire con la Rete

• Il sistema operativo mette a disposizione una coda (BackgroundTransferService), nella quale aggiungere le operazioni di trasferimento in background (BackgroundTransferRequest)

• E’ possibile specificare le condizioni da rispettare per avviare il trasferimento (solo rete WI-Fi, solo se in ricarica, in qualsiasi caso) (TransferPreferences)

• L’applicazione aggiunge le operazioni alla coda e, quando le condizioni vengono rispettate, vengono eseguite

BACKGROUND TRANSFER

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 17: Interagire con la Rete

• Dimensione massima download file:

• 20 MB se collegato alla rete cellulare

• 100 MB se collegato alla rete Wi-Fi

• Illimitato se collegato alla rete Wi-Fi e in ricarica

• Un’applicazione può mettere in coda massimo 25 operazioni

• Il sistema operativo può gestire una coda di massimo 500 operazioni

• Il sistema operativo può eseguire massimo due operazioni contemporaneamente

VINCOLI

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 18: Interagire con la Rete

• I download in background devono necessariamente salvare i file nella cartella /Shared/Transfers nello storage

• Ad ogni caricamento dell’app, bisogna verificare lo stato delle operazioni: potrebbero essere terminate in background

• Ogni volta che un’operazione è terminata, occorre rimuoverla manualmente dalla coda

ALCUNI CONSIGLI

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 19: Interagire con la Rete

• Include un controllo, TransferControl, e una classe, TransferMonitor, che permettono di gestire la rappresentazione visuale dello stato del trasferimento

• TransferControl è un controllo XAML, che mostra una progress bar con una descrizione testuale

• TransferMonitor è una classe che funge da «wrapper» verso il gestore della coda (BackgroundTransferService)

WINDOWS PHONE TOOLKIT

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 20: Interagire con la Rete

BACKGROUND TRANSFER Demo

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 21: Interagire con la Rete

SERVIZI

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 22: Interagire con la Rete

• Per i servizi WCF, SOAP e oData Visual Studio è in grado di generare una classe proxy, che permette di interagire mantenedo l’approccio a oggetti

• Per oData, è necessarie installare un plugin per VS: http://s.qmatteoq.com/oDataWP8

• Vengono aggiunti al progetto tramite il menu Add service reference di Visual Studio

SERVIZI WCF, SOAP O ODATA

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 23: Interagire con la Rete

• Le interazioni con il servizio sono gestite con i comandi standard del protocollo HTTP (POST, GET, PUT, DELETE)

• Le risposte vengono formattate utilizzando gli standard XML o JSON

• Sono i più diffusi al giorno d’oggi:

• Compatibilità con tutte le piattaforme

• Semplicità di uso

• Utilizzo di formati standard

SERVIZI REST

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 24: Interagire con la Rete

• L’unico inconveniente nel lavorare con i servizi REST è che restituiscono strutture dati «piatte», al contrario della logica ad oggetti dell’applicazione

• Serializzare = trasformare in oggetti una struttura di dati espressa in XML o JSON

• Deserializzare = trasformare una struttura dati XML o JSON in oggetti

• Esistono librerie in grado di effettuare questa procedura in automatico

SERIALIZZAZIONE

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 25: Interagire con la Rete

• HttpClient:

• semplice da utilizzare

• supporta async e await

• compatibile con tutte le tecnologie Microsoft

• supporta tutti i comandi standard del protocollo HTTP

• serializzazione e deserializzazione vanno gestite manualmente

HTTPCLIENT

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 26: Interagire con la Rete

• Libreria open source disponibile su NuGet: http://www.nuget.org/packages/Newtonsoft.Json/

• Supporta funzionalità di serializzazione e deserializzazione

• Supporta LINQ to JSON, un linguaggio di manipolazione di dati in JSON analogo a LINQ to XML

• Offre performance e funzionalità superiori rispetto alla serializzazione nativa inclusa nel framework (DataContractJsonSerializer)

JSON.NET

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 27: Interagire con la Rete

• RestSharp:

• più completa

• serializza e deserializza in automatico i dati

• utilizza l’approccio asincrono basato su callback

• poco flessibile in alcuni scenari

• non disponibile per tutte le tecnologie Microsoft (esempio: no Windows Store Apps).

RESTSHARP

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 28: Interagire con la Rete

SERVIZI Demo

© 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Page 29: Interagire con la Rete

10/15/2013 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.

Grazie!

Blog:

http://www.qmatteoq.com

http://wp.qmatteoq.com

Twitter: @qmatteoq

Mail: [email protected]

Materiale su http://sdrv.ms/164szm0


Recommended