32
CLOUD COMPUTING IN AMBITO MOBILE INTRODUZIONE AD ICLOUD Dr. Paolo Casoto, Ph. D., 2012 1 Dr. Paolo Casoto, Ph. D., 2012

Introduzione ad iCloud

Embed Size (px)

DESCRIPTION

Slide della lezione del 17 aprile 2012 di Tecnologie Lato Server - Università degli Studi di Udine. Introduzione breve all'utilizzo di iCloud per l'implementazione di uno strumento di rilevazione telemetrica.

Citation preview

Page 1: Introduzione ad iCloud

Dr. Paolo Casoto, Ph. D., 2012 1

CLOUD COMPUTING IN AMBITO MOBILE

INTRODUZIONE AD ICLOUD

Dr. Paolo Casoto, Ph. D., 2012

Page 2: Introduzione ad iCloud

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

Page 3: Introduzione ad iCloud

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

Page 4: Introduzione ad iCloud

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

Page 5: Introduzione ad iCloud

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

Page 6: Introduzione ad iCloud

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”

Page 7: Introduzione ad iCloud

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

Page 8: Introduzione ad iCloud

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

Page 9: Introduzione ad iCloud

Dr. Paolo Casoto, Ph. D., 2012 9

iCloud: memorizzazione di file

Page 10: Introduzione ad iCloud

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.

Page 11: Introduzione ad iCloud

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

Page 12: Introduzione ad iCloud

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.

Page 13: Introduzione ad iCloud

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.

Page 14: Introduzione ad iCloud

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

Page 15: Introduzione ad 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

Page 16: Introduzione ad iCloud

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.

Page 17: Introduzione ad iCloud

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

Page 18: Introduzione ad iCloud

Dr. Paolo Casoto, Ph. D., 2012 18

UIDocument

Ciascun UIDocument è caratterizzato da: URL univoco di riferimentoNomeTipoData di ultima modificaStato del documento

Page 19: Introduzione ad iCloud

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

Page 20: Introduzione ad iCloud

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

Page 21: Introduzione ad iCloud

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

Page 22: Introduzione ad 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

Page 23: Introduzione ad iCloud

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

Page 24: Introduzione ad iCloud

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

Page 25: Introduzione ad iCloud

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 !!!

Page 26: Introduzione ad iCloud

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.

Page 27: Introduzione ad iCloud

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).

Page 28: Introduzione ad iCloud

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

Page 29: Introduzione ad iCloud

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

Page 30: Introduzione ad iCloud

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

Page 31: Introduzione ad iCloud

Dr. Paolo Casoto, Ph. D., 2012 31

Proviamo su XCode

Page 32: Introduzione ad iCloud

Dr. Paolo Casoto, Ph. D., 2012 32

Domande ??? Grazia a tutti per l’attenzione

[email protected]