AFNetworking 1.0

Alcune settimane fa, AFNetworking ha raggiunto la versione 1.0, un'importante pietra miliare per ogni progetto software. In questo suggerimento rapido, ti presenterò rapidamente a AFNetworking e mostrerò quale versione 1.0 ha da offrire.


Che cos'è AFNetworking?

Il README del repository GitHub di AFNetworking lo riassume bene.

AFNetworking è una deliziosa libreria di rete per iOS e Mac OS X. È costruita sopra NSURLConnection, NSOperation, e altre tecnologie familiari della Fondazione. Ha un'architettura modulare con API ben progettate e ricche di funzionalità che sono una gioia da usare.

Come menziona il README, la componente più importante di AFNetworking è la sua comunità e non potrei essere più d'accordo. Ogni volta che considero una libreria open-source per un progetto, cerco tre cose:

  1. Quanto è attivo il progetto rispetto allo sviluppo
  2. Se il progetto è ben documentato e comprensibile
  3. Il livello di coinvolgimento della comunità. Posso trovare aiuto e supporto se necessario?

Secondo me, un progetto gestito da una singola persona è più probabile che venga abbandonato rispetto a un progetto con dozzine di contributori attivi, come AFNetworking. È sicuro dire che AFNetworking non scomparirà presto!


sfondo

Mattt Thompson (@mattt) e Scott Raymond (@sco) hanno avviato AFNetworking mentre erano a Gowallo. Sfortunatamente, nel dicembre 2011 Gowalla è stata acquisita da Facebook e successivamente chiusa. Tuttavia, Mattt Thompson non ha smesso di lavorare su AFNetworking. Ha aperto il progetto e questo è il momento in cui AFNetworking ha davvero guadagnato popolarità e slancio. Una meravigliosa comunità di sviluppatori ha lavorato e contribuito a AFNetworking nell'ultimo anno e questo ha portato al rilascio della versione 1.0 a ottobre 2012.

Come ho scritto in precedenza, il networking è difficile, specialmente sui dispositivi mobili. La maggior parte delle applicazioni mobili ha un componente di rete di qualche tipo per recuperare o inviare dati a un servizio web. Non sorprende quindi che AFNetworking sia uno dei repository più popolari su GitHub nella categoria Objective-C. Sostituisce gradualmente la popolare libreria ASIHTTPRequest e offre agli sviluppatori una libreria di rete affidabile e meravigliosa con cui lavorare.

Se sei nuovo su AFNetworking, ti stai chiedendo perché dovresti usare AFNetworking invece di NSURLConnection o qualsiasi altra libreria di rete nativa disponibile con l'SDK di iOS. Diamo un'occhiata a ciò che AFNetworking ha da offrire.


Benefici

Oltre al ricco set di funzioni di AFNetworking, ci sono due importanti vantaggi nel lavorare con AFNetworking. Il primo vantaggio è la facilità d'uso. AFNetworking fa ampio uso di blocchi, e questo rende le sue API semplici, eleganti e, oserei dire, belle! Anche se AFNetworking è costruito sopra NSURLConnection, come sviluppatore, non è necessario preoccuparsi di delegare i callback quando si lavora con AFNetworking. Facendo uso di blocchi di successo e fallimento, il codice di rete sarà conciso, più leggibile e generalmente più facile da mantenere. Le classi base di AFNetworking sono basate su NSOperation, che offre ad AFNetworking molta potenza e flessibilità in termini di schedulazione e richieste di accodamento, nonché la sospensione e l'annullamento delle richieste.

Il secondo importante vantaggio di AFNetworking è la sua modularità. Anche se AFNetworking viene fornito con un numero di classi specializzate per la gestione di attività comuni, come il recupero e l'elaborazione di dati JSON da un servizio Web, è facile estendere AFNetworking in base alle esigenze dell'applicazione..

Cosa ottieni gratis quando scegli AFNetworking? Non coprirò tutte le funzionalità di questa fantastica libreria, ma voglio mettere in risalto le funzionalità che rendono davvero AFNetworking.

Componenti principali

AFURLConnectionOperation è il componente principale di AFNetworking in termini di gestione delle richieste. Internamente, AFURLConnectionOperation usi NSURLConnection. Come ho detto prima, le classi principali di AFNetworking sono sottoclassi di NSOperation. Ciò significa che le richieste possono essere messe in coda, in pausa e annullate quando necessario.

AFHTTPRequestOperation è una sottoclasse di AFURLConnectionOperation e ha lo scopo di gestire le richieste HTTP (S) in modo specifico.

Sottoclassi specializzate

AFJSONRequestOperation, AFXMLRequestOperation, AFPropertyListRequestOperation, e AFImageRequestOperation sono sottoclassi di AFHTTPRequestOperation. Ognuna di queste sottoclassi si occupa della gestione di un tipo specifico di richiesta. Anche se queste classi specializzate lavorano fuori dagli schemi, è facile creare sottoclassi AFHTTPRequestOperation creare una sottoclasse che si adatti perfettamente alle esigenze della tua applicazione.

Client HTTP

Se la tua applicazione parla con un servizio web, allora ti piacerà AFHTTPClient. Questa classe fornisce una comoda interfaccia per l'interazione con un servizio web. Per sottoclassi AFHTTPClient, è possibile specificare intestazioni predefinite per ogni richiesta, gestire l'autenticazione, costruire richieste di moduli multipart e molto altro. AFHTTPClient ha anche la capacità di monitorare e rispondere alle modifiche della rete proprio come fa la classe di raggiungibilità di Apple.

UIImageView

La libreria AFNetworking viene fornita con una categoria attiva UIImageView, di cui ho discusso qualche mese fa. Questa categoria leggera rende il caricamento delle immagini facile e veloce senza compromettere la reattività del thread principale.

Attività in background

Nella versione 1.0, è anche possibile contrassegnare un'operazione di richiesta come attività in background, il che significa che l'operazione continuerà a essere eseguita in background quando l'applicazione viene spostata sullo sfondo.

ARCO

Originariamente, AFNetworking non supportava ARC out of the box. Tuttavia, con la versione 1.0, AFNetworking offre ora il supporto ARC completo per impostazione predefinita.


Comunità

Come ho detto all'inizio di questo articolo, la comunità di un progetto open-source è spesso fondamentale per il suo successo. Non solo è importante mantenere attivo lo sviluppo, ma gli sviluppatori sono spesso riluttanti, e giustamente, a utilizzare librerie che non sono supportate da una comunità sana per assistenza e supporto. AFNetworking ha una comunità fantastica e Matt Thompson risponde anche a domande su Stack Overflow su AFNetworking.

Inoltre, la documentazione e il Wiki di AFNetworking sono un'ottima risorsa per essere operativi con AFNetworking. Grazie alla popolarità di AFNetworking, ci sono anche una serie di tutorial eccellenti che ti aiuteranno ad accelerare velocemente.


Requisiti

Anche se le versioni precedenti di AFNetworking erano compatibili con iOS 4.3, la versione 1.0 richiede iOS 5.0 (o successivo) o OS X 10.7 (o successivo).


Conclusione

AFNetworking non è solo un'altra libreria con poche classi di utilità. È una libreria solida ma flessibile che ha dimostrato il suo valore e affidabilità. Se stai cercando una libreria di rete per il tuo prossimo progetto iOS o OS X ci sono molti motivi per scegliere questo gioiello!