Android Tips | Volley, la libreria definitiva per la creazione di client REST

ELbuild sviluppa app Android con Google Android Volley

ELbuild sviluppa app Android con Google Android VolleyNello sviluppo di app uno dei pattern più diffusi è il tradizionale modello client-server dove i client sono costituiti dai terminali degli utenti ed il server è un applicativo sotto controllo dello sviluppatore che eroga servizi sotto forma di API REST a supporto della business logic della app. La maggior parte delle applicazioni che prevedono interazione fra utenti più o meno diretta sfruttano questo pattern e si appoggiano quindi su un set di API REST con cui i terminali degli utenti dialogano.

Dal punto di vista dello sviluppatore l’implementazione del codice a supporto della connessione con questo tipo di servizi è spesso qualcosa di molto ripetitivo per cui è frequente appoggiarsi su librerie esterne che forniscono già l’implementazione delle operazioni più comuni. Una delle migliori, fra le diverse che abbiamo testato, è Volley, scritta da sviluppatori Google e, stando al talk di presentazione del Googlie I/O 2013, utilizzata in grand parte delle applicazioni di punta di Google stessa.

Google  Android Volley, caretteristiche principali

Google ha presentato Volley come una  “HTTP library that makes networking for Android apps easier and most importantly, faster”. Lo scopo quindi è chiaro, ovvero rendere più semplici (da implementare) e più veloci le interazioni di rete basate sul protocollo HTTP.

Le principali caratteristiche che, oltre al fatto di essere codice ufficiale Google rilasciato all’interno dell’AOSP, rendono Volley la libreria di riferimento per l’implementazione di client REST sono le seguenti:

  • scheduling automatico (con gestione della priorità) delle richieste di rete. Volley infatti mette a disposizione una coda e rende trasparente all’utente la gestione della priorità. Lo sviluppatore deve solo aggiungere la request alla coda e fornire una callback. Volley pensa al resto.
  • gestione trasparente della concorrenza. Tutti i metodi di Volley sono thread-safe per cui è possibile per lo sviluppatore gestire l’aggiunta e rimozione delle request con la garanzia che lo stato degli oggetti sarà protetto dalle modifiche concorrenti. Le richieste a loro volta vengono gestite in parallelo grazie a diversi thread concorrenti.
  • caching trasparente in memoria o su SD. Lo sviluppatore non deve preoccuparsi nemmeno del caching delle richieste e delle risorse. Basta dichiarare una determinata risorsa REST come cachable e configurarne l’expiration e Volley gestirà automaticamente il caching in modo compliant al protocollo HTTP.
  • possibilità di cancellare una request. Questa feature è determinante per gestire correttamente la relazione fra il lifecycle delle activity Android e la coda di richieste REST. Può infatti accadere che in presenza di azioni dell’utente il risultato di una request diventi inutile (es. perchè l’activity da popolare è stata già distrutta). Per consentire performance migliori ed evitare request inutili (consumano, tempo, banda e memoria) Volley mette a disposizione una API per cancellare una request schedulata. E’ possibile anche stabilire scopes specifici in modo da cancellare una request automaticamente al variare del contesto.
  • possibilità di configurazione e customizzazione. Lo sviluppatore ha la facoltà di estendere gli oggetti forniti nel toolbox Volley per creare componenti con un comportamento customizzato per le richieste specifiche della propria app. E’ inoltre possibile intervenire finemente sulle politiche di retrial e backoff.
  • framework di logging e debugging molto potente. Sviluppare un client REST, proprio per la natura asincrona delle risposte rispetto alle richieste comporta spesso una difficoltà maggiore nelle fasi di debug. Volley offre una serie di primitive avanzate che supportano in queste fasi.
  • un toolbox ricchissimo di strumenti utili. Volley offre classi che automatizzano task molto comuni dello sviluppo di una app, come ad esempio il caricamento asincrono di immagini da URL che viene gestito in una riga grazie alla classe NetworkImageView.
Una volta provata “sul campo” Volley eccelle nell’utilizzo tipico di popolazione asincrona di una UI (uno use case che ricorre nella maggior parte delle app) e si integra facilmente con qualsiasi protocollo e formato che si appoggia su HTTP. Offre supporto nativo per JSON, immagini, e stringhe grezze (sulle quali lo sviluppatore può costruire eventuali protocolli custom).
Utilizzando Volley lo sviluppatore guadagna in produttività concentrandosi principalmente sulla logica applicativa e beneficiando di uno strumento testato e professionale per la gestione delle richieste asincrone.
Volendo trovare un difetto a questa libreria si può citare l’assenza di documentazione, a cui comunque si può tranquillamente sopperire tramite tutorial di altri sviluppatori o in ultima analisi guardando direttamente il codice sorgente di Volley, che Google ha messo a disposizione.
Inoltre, ma questo è un parere strettamente personale, l’utilizzo delle callback inline (ovvero definite direttamente fra i parametri del metodo chiamante) come suggerito dai vari tutorial e dal talk di presentazione stesso, porta alla scrittura di metodi abbastanza lunghi che io trovo meno eleganti e di più difficile manutenzione nel medio periodo. In questo momento sto sviluppando due app basate su Volley, mi riservo di postare altri articoli una volta che avrò individuato un pattern che mi soddisfa pienamente.

ELbuild, sviluppo app Android

ELbuild è specializzata nello sviluppo di app Android e iOS ed è costantemente alla ricerca delle soluzioni tecniche più avanzate da impiegare nello sviluppo dei progetti commissionati dai propri clienti. Se hai un’idea su una app e vuoi valutarne la realizzazione contattaci senza impegno.


Autore: Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Un pensiero riguardo “Android Tips | Volley, la libreria definitiva per la creazione di client REST”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *