Post on 04-Dec-2014
description
transcript
Dr. Paolo Casoto, Ph. D., 2012 1
CLOUD COMPUTING IN AMBITO MOBILE
INTRODUZIONE AD ICLOUD
Dr. Paolo Casoto, Ph. D., 2012
Dr. Paolo Casoto, Ph. D., 2012 2
iCloud
Insieme di interfacce e servizi che consentono l’interscambio di informazioni fra applicazioni in esecuzione su differenti dispositiviGalassia eterogenea di dispositivi
○ Mobile○ Tablet○ Desktop○ Web
Dr. Paolo Casoto, Ph. D., 2012 3
iCloud
Singolo punto di accesso per la memorizzazione di datiBackup remoto dei datiSincronizzazione dei dati in tempo reale
senza interazione esplicita da parte dell’utente Le medesime informazioni e dati condivisi
su tutti i propri dispositiviE.g.: il record raggiunto in un gioco installato
sul mio iPhone è immediatamente accessibile dalla stessa app su iPad
Dr. Paolo Casoto, Ph. D., 2012 4
iCloud: modalità di memorizzazione iCloud mette a disposizione degli
sviluppatori due tipologie di memorizzazione dei contenuti1. Memorizzazione su tabella di hash chiave-
valore di piccole quantità di dati con variabilità ridotta
○ Dati che in generale conservereste in un file di proprietà o preferenze della vostra applicazione
2. Memorizzazione di documenti
Dr. Paolo Casoto, Ph. D., 2012 5
iCloud: memorizzazione chiave-valore Piccole quantità di dati
Dimensione massima 1 MB Formato chiave-valore
In iOS tale formato è generalmente associato alla struttura dati property-list, un formato XML per la memorizzazione di collezioni chiave-valore.
Limitata modificabilità E.g.: proprietà dell’applicativo
Tipi dati limitati ai dati supportati dal formato property-list
Dr. Paolo Casoto, Ph. D., 2012 6
iCloud: memorizzazione chiave-valore Sincronizzazione periodica ad intervalli
di tempo predefiniti Nessuna gestione dei conflitti fra le
versioniLa versione con il timestamp più recente è
la versione corrente. Incide limitatamente sulla interfaccia
grafica della applicazione“Sotto il cofano”
Dr. Paolo Casoto, Ph. D., 2012 7
iCloud: memorizzazione di file
Consente la memorizzazione di file e cartellePuò essere utilizzato non solo per la
memorizzazione di documenti in senso lato (e.g.: file di testo)○ Memorizzazione dei dati del modello○ Memorizzazione di dati privati dell’applicativo○ Memorizzazione di dati generati dall’utente
La gestione è analoga a quella di un filesystem tradizionaleApertura, chiusura, scrittura e lettura di file e
cartelle
Dr. Paolo Casoto, Ph. D., 2012 8
iCloud: memorizzazione di file
Spazio limitato alla dimensione consentita dall’account iCloud dell’utente
Aggiornamento in modalità pullQuando avviene una modifica ad un file, tale
modifica è propagata a tutti i dispositivi○ Solo a livello di metadata○ Il file è scaricato interamente solo in
occasione del primo utilizzo successivo alla modifica
Dr. Paolo Casoto, Ph. D., 2012 9
iCloud: memorizzazione di file
Dr. Paolo Casoto, Ph. D., 2012 10
iCloud e sicurezza Tutte le applicazioni iOS operano, per ovvi
motivi di sicurezza, all’interno di una sandboxL’accesso al filesystem è limitato alle sole
cartelle private dell’applicazione stessaNon è consentito l’accesso a file di altre
applicazioni o a file del sistema Anche in fase di utilizzo di iCloud è
necessario identificare univocamente i soli documenti e le sole cartelle di proprietà dell’applicazione.
Dr. Paolo Casoto, Ph. D., 2012 11
iCloud e sicurezza Ciascuna applicazione è caratterizzata da un
identificativo univoco, il bundle.Il bundle identifica univocamente una applicazione
all’interno di un team di sviluppo, a sua volta caratterizzato da un codice identificativo univoco di 10 cifre.
Codice team + bundle = codice univoco a livello di App Store
Lo sviluppatore può definire le cartelle che saranno utilizzate su iCloud da una applicazione indicandone i valori di Codice team + bundle
Dr. Paolo Casoto, Ph. D., 2012 12
iCloud e sicurezza
Una applicazione può, quindi, accedere anche alle cartelle condivise da altre applicazioni dello stesso team.E.g.: applicazioni con proprietà o
configurazioni condivise. Non è possibile, al contrario, accedere
ai dati di applicazioni sviluppate da terze parti al di fuori dal team.
Dr. Paolo Casoto, Ph. D., 2012 13
Integrare iCloud all’interno della propria applicazione
Verificare la disponibilità del servizio iCloudL’utente ha configurato il servizio, la connettività
è disponibile, et al. Persistere su file lo stato della propria
applicazione Collocare i propri file sul servizio iCloud e
gestirne lo stato del trasferimento. Gestire i conflitti che possono generarsi nel
caso di accesso concorrente alle risorse condivise.
Dr. Paolo Casoto, Ph. D., 2012 14
Verificare la disponibilità del servizio iCloud E’ necessario invocare uno specifico metodo
per consentire all’applicazione di includere all’interno del proprio sandbox le directory all’interno di iCloud
URLForUbiquityContainerIdentifier restitisce l’url (un oggetto NSUrl) che rappresenta la cartella alla quale l’applicazione intende accedere.
E’ necessario invocare il metodo almeno una volta per ciascuna cartella, al fine di verificare la disponibilità del servizio iCloud
Dr. Paolo Casoto, Ph. D., 2012 15
Gestione della concorrenza L’accesso ad un file memorizzato su
iCloud deve essere regolato opportunamente al fine di evitare la modifica concorrente.E’ necessario disporre di una soluzione che
consenta un accesso controllato a ciascun file.○ E.g.: Protocollo NSFilePresenter○ A proposito, in Objective C un protocollo è
il corrispettivo di una interfaccia in JAVA
Dr. Paolo Casoto, Ph. D., 2012 16
NSFilePresenter e UIDocument
In iOS 5 è stata introdotta una specifica classe, la classe UIDocumentFinalizzata alla gestione ed alla memorizzazione di
contenuti prodotti dall’utenteL’utente visualizza, crea e modifica un insieme di
istanze di UIDocument○ UIDocument implementa il protocollo NSFilePresenter
Ma cosa può essere rappresentato mediante un UIDocumentImmagini, testi, informazioni o riferimenti a file esistentiClasse intermedia che collega informazioni
memorizzate all’interno di un file con il modello dei dati.
Dr. Paolo Casoto, Ph. D., 2012 17
UIDocument
Implementa automaticamente i meccanismi necessari alla persistenza delle informazioni.Salvataggio periodico delle informazioni
invisibile all’utenteGestione di versioni e conflittiGestione dei processi di lettura e scrittura in
background
Dr. Paolo Casoto, Ph. D., 2012 18
UIDocument
Ciascun UIDocument è caratterizzato da: URL univoco di riferimentoNomeTipoData di ultima modificaStato del documento
Dr. Paolo Casoto, Ph. D., 2012 19
UIDocument ed iCloud Definito un oggetto UIDocument, associato
ad un file corrispondente, è possibile collocare tale file all’interno delle cartelle della sandbox dell’applicazioneSempre in un thread secondario, o blocchereste
l’applicazione Il demone di gestione di iCloud verifica le
modifiche apportate ai file e ne sincronizza lo stato con il serverAnche in questo caso la sincronizzazione è gestita
mediante opportuno oggetti associati ai singoli file
Dr. Paolo Casoto, Ph. D., 2012 20
Conflitti e versionamento iCloud consente la gestione di versioni
differenti dei medesimi documenti e la gestione di eventuali conflittiMergeRevertCommit
Dr. Paolo Casoto, Ph. D., 2012 21
Ricerca ed aggiornamento I file condivisi con iCloud presenti all’interno
della applicazione possono essere modificati anche ad insaputa della applicazione stessaA differenza di tutte le altre tipologie di file, che
possono essere modificati all’interno della sandbox esclusivamente dalla applicazione stessa
Gestire le notifiche relative all’aggiunta ed alla rimozione di un file all’interno del container iCloud
Dr. Paolo Casoto, Ph. D., 2012 22
Stato dei documenti condivisi mediante iCloud
Il programmatore può accedere in qualsiasi momento allo stato delle risorse condivise mediante iCloud dalla propria applicazioneE.g.: file in fase di upload, file in fase di
download, file già scaricato. Quando si cerca di accedere ad un file
in fase di download, il thread di accesso rimane bloccato fino alla conclusione del download
Dr. Paolo Casoto, Ph. D., 2012 23
Stato dei documenti condivisi mediante iCloud
Verificate quindi lo stato dei vostri documenti prima di cercare di accedervi, anche a livello graficoE.g.: non consentire la selezione degli
elementi ancora in fase di download Attenzione: mentre le modifiche ai file
sono inviate immediatamente al server, le nuove versioni di file modificati altrove sono scaricate solo all’atto della richiesta
Dr. Paolo Casoto, Ph. D., 2012 24
Stato dei documenti condivisi mediante iCloud
E’ possibile forzare in qualsiasi momento l’avvio del download di un file non scaricato interamenteAttenzione, il tutto può generare il blocco
della vostra interfaccia graficaOperare su thread secondari
Dr. Paolo Casoto, Ph. D., 2012 25
Memorizzazione chiave-valore Grazie ad una specifica classe, la classe
NSUbiquitousKeyValueStore, è possibile disporre di un tabella di hash condivisibile mediante iCloud.Corrispettivo iCloud della classe
NSUserDefaults○ Classe per la memorizzazione di proprietà locali.
La sincronizzazione delle informazioni memorizzate è del tutto trasparente al programmatore !!!
Dr. Paolo Casoto, Ph. D., 2012 26
Il vademecum del programmatore iCloud Gestire la cancellazione dei documenti con cura.
L’eliminazione di un documento in locale comporta la rimozione anche su tutti i dispositivi dell’utente e sul server
Non condividere mai i file privati o interni alla applicazione
Gestire con cura il posizionamento di documenti all’interno della cartella Documents dell’utenteCartella “speciale” che l’utente può visualizzare e
modificare.
Dr. Paolo Casoto, Ph. D., 2012 27
Ma passiamo ad un esempio reale Un cliente vi ha richiesto una
applicazione che consenta ad un insieme di controllori sparsi sul territorio di effettuare un insieme di misurazioniE.g.: rilevamento dell’andamento di un
sensore Ciascun rilevamento è caratterizzato dal
valore identificato, dal nome del rilevatore, dalla data e dalla posizione geografica (lat – lon).
Dr. Paolo Casoto, Ph. D., 2012 28
Definiamo la classe Misurazione
Definiamo una classe Misurazione così definita:NSString *codiceOperatoreNSNumber *valoreMisuratoNSDate *dataNSNumber *latNSNumber *lon
Estendiamo la classe UIDocument descritta in precedenza
Dr. Paolo Casoto, Ph. D., 2012 29
Implementiamo i metodi per la persistenza Implementiamo i due metodi necessari
alla memorizzazione ed alla lettura dei dati dal filesystemCon gestione centralizzata dell’accesso e
della sincronizzazionecontentsForType:error:
○ Salvataggio dei datiloadFromContents:ofType:error
○ Caricamento dei dati
Dr. Paolo Casoto, Ph. D., 2012 30
Gestiamo le modifiche ai documenti Gestiamo ora le eventuali modifiche che
possono essere generate ai nostri documenti mentre l’applicazione è in funzione.Implementiamo una classe in grado di gestire
l’informazione relativa alla gestione del caricamento delle informazioni○ Delegato: corrispettivo dei delegati in
ambiente .NET e dei listener in Java○ Funzione di callback da invocare in presenza di
specifici eventi
Dr. Paolo Casoto, Ph. D., 2012 31
Proviamo su XCode
Dr. Paolo Casoto, Ph. D., 2012 32
Domande ??? Grazia a tutti per l’attenzione
casoto@mobe.it