Your SlideShare is downloading. ×

Interagire con la Rete

444
views

Published on

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 …

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.

Published in: Technology

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
444
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ITALIAN WEBINAR #4 INTERAGIRE CON LA RETE Matteo Pagani Nokia Developer Champion Microsoft MVP – Windows Phone Development Software Engineer @ Funambol
  • 2. AGENDA • • • • Determinare la connessione Upload e download di file Background transfer Interagire con i servizi © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 3. CONNETTIVITA’ © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 4. CONNETTIVITA’ • • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved. 10/15/2013
  • 5. CONNETTIVITA’ Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 6. INTERAGIRE CON LA RETE © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 8. WEBCLIENT 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) { UI Thread MessageBox.Show(e.Result); } } © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 9. HTTPWEBREQUEST 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); } } © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 10. WELCOME HTTPCLIENT • • • • 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() © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 11. DOWNLOAD HttpClient client = new HttpClient(); Stream stream = await client.GetStreamAsync(“url"); HttpClient client = new HttpClient(); string result = await client.GetStringAsync(“url"); © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 12. UPLOAD 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); } © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 13. HTTPCLIENT Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 14. BACKGROUND TRANSFER © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 15. BACKGROUND TRANSFER • • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 16. BACKGROUND TRANSFER • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 17. VINCOLI • • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 18. ALCUNI CONSIGLI • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 19. WINDOWS PHONE TOOLKIT • • • 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) © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 20. BACKGROUND TRANSFER Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 21. SERVIZI © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 22. SERVIZI WCF, SOAP O ODATA • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 23. SERVIZI REST • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 24. SERIALIZZAZIONE • • • • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 25. HTTPCLIENT • 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 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 26. JSON.NET • • • • 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) © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 27. RESTSHARP • 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). © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 28. SERVIZI Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 29. Grazie! Blog: http://www.qmatteoq.com http://wp.qmatteoq.com Twitter: @qmatteoq Mail: info@qmatteoq.com Materiale su http://sdrv.ms/164szm0 © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved. 10/15/2013