64
Template designed by Advanced Windows Store Development Using C# Matteo Pagani Support Engineer – AppConsult @ Microsoft [email protected] http://wp.qmatteoq.com

70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Embed Size (px)

Citation preview

Page 1: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Template designed by

Advanced Windows Store Development Using C#Matteo PaganiSupport Engineer – AppConsult @ [email protected] http://wp.qmatteoq.com

Page 2: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il percorso di certificazione

• L’esame Advanced Windows Store Development Using C# fa parte del percorso per ottenere la certificazione MCSD sulle Windows Store app

• Gli altri due esami sono:• Programming in C#• Basic Windows Store Development Using C#

Page 3: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• E’ possibile organizzare una review della propria applicazione con un engineer di Microsoft (uno a caso )

• Vengono valutati una serie di criteri (uso della live tile, gestione dei settings, ecc.)

• Se l’app passa la review, è possibile ottenere la certificazione MCSD sostenendo solamente l’esame Advanced

• http://aka.ms/AppToCertDvlup

Il programma AppToCert

Page 4: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Develop Windows Store apps

• Discover and interact with devices

• Program user interaction

• Enhance the user interface

• Manage data and security

• Prepare for a solution deployment

Gli argomenti della certificazione

Page 5: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

I background task sono il meccanismo offerto dal Windows Runtime per effettuare operazioni quando l’app non è in esecuzione.

Concetti fondamentali:

• Imparare a creare un task in background

• Utilizzare la classe Windows.ApplicationModel.Background

• Implementare l’interfaccia IBackgroundTask

Obiettivo 1.1: create background tasks

Page 6: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Un background task è un progetto separato dall’applicazione, che girà però nel suo stesso contesto (storage, capability, ecc.)

• E’ un progetto di tipo Windows Runtime Component e contiene una classe pubblica che implementa l’interfaccia IBackgroundTask

• Il metodo Run() definisce il codice che viene eseguito quando il background task viene lanciato

Creare un background task

public sealed class BikePositionUpdateBackgroundTask : IBackgroundTask{

public void Run(IBackgroundTaskInstance taskInstance){

}}

Page 7: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il background task deve essere registrato nel file di manifest e nel codice dell’applicazione principale

Creare un background task

var taskName = "bikePositionUpdate";var builder = new BackgroundTaskBuilder();builder.Name = taskName;builder.TaskEntryPoint = "BikeGPS.BikePositionUpdateBackgroundTask";

Page 8: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il background task viene registrato e gestito dall’applicazione principale.

Concetti fondamentali:

• Usare i trigger

• Gestire il canale di comunicazione

• Interagire con la lock screen

• Gestire trasferimenti di file in background

Obiettivo 1.2: consumare un background task

Page 9: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Trigger: è la condizione che fa scatenare l’esecuzione di un task in background.

Esempi:

• TimeTrigger, per esecuzione a intervalli di tempo

• PushNotificationTrigger, per intercettare le notifiche push

• SystemTrigger, per rispondere a eventi di sistema, come la presenza di connettività

Alcuni trigger richiedono che l’applicazione sia in grado di interagire con la lock screen

Consumare un background task

Page 10: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Condizioni: permettono l’esecuzione di un background task solo se una determinata condizione è soddisfatta.

Esempi:

• InternetAvailable

• UserPresent

• SessionConnected

Consumare un background task

Page 11: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• L’obiettivo dei background task è quello di dare maggiore flessibilità allo sviluppatore, senza intaccare le performance e la batteria del sistema

• Esistono due vincoli:• CPU: tempo di CPU limitato

• Rete: massima quantità di dati trasferibili dalla rete, calcolata in base alla velocità della linea

Consumare un background task

Page 12: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Il Windows Runtime offre le classi BackgroundDownloader e BackgroundUploader per il trasferimento di file in background

• Devono essere usate per file di medie / grandi dimensioni

• In caso di file necessari per l’utilizzo dell’applicazione o di piccole dimensioni, meglio utilizzare la classe HttpClient

Trasferimento di file

Page 13: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

WinMD è il nuovo formato che consente di creare componenti per le applicazioni basate sul Windows Runtime

Concetti fondamentali:

• Creare un componente WinMD in C#

• Utilizzare un componente WinMD

• Gestire i tipi dei componenti WinMD

• Aggiungere una reference ad un componente WinMD

Obiettivo 1.3: creare componenti WinMD

Page 14: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Sono librerie che possono essere utilizzate all’interno di una Windows Store app

• Sfruttano lo stesso approccio di Win32 (COM, P/Invoke, ecc.) ma sono più semplici da consumare

• Grazie ai file .winmd (che contengono i metadati che descrivono la libreria), è possibile utilizzarle indipendentemente dal linguaggio con cui è stata sviluppata l’app

I componenti WinMD

Page 15: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Tutti i campi, parametri e valori di ritorno di un metodo pubblico devono essere tipi base del Windows Runtime

• Le classi pubbliche devono essere sealed

• Tutti i tipi pubblici devono avere un namespace base che coincida con il nome dell’assembly e non deve iniziare con la parola chiave «Windows»

Creare un componente WinMD

Page 16: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

I concetti fondamentali sono:

• Utilizzare la classe CameraCaptureUI

• Utilizzare la classe MediaCapture

• Configurare la fotocamera

• Scegliere il codec più adatto

• Gestire gli eventi

Obiettivo 2.1: catturare audio e video

Page 17: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Adatta per applicazioni nelle quali non è necessario iun controllo avanzato della fotocamera

• L’operazione di acquisizione viene demandata all’applicazione nativa di Windows 8

• La vostra applicazione riceve direttamente la foto o il video che sono stati acquisiti

CameraCaptureUI

Page 18: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Adatte per il controllo avanzato della fotocamera

• Preview e acquisizione sono a carico dell’applicazione

• Possibilità di controllare in dettaglio le proprietà della fotocamera

• Possibilità di acquisire audio e video in diversi formati

• In entrambi i casi, assicurarsi di aver aggiunto le capability Webcam e Microphone nel file di manifest

MediaCapture

Page 19: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

I dispositivi Windows sono dotati di numerosi sensori, con cui è possibile interagire dall’applicazione.

Concetti fondamentali:

• Determinare se un sensore sia disponibile

• Configurare il file di manifest

Obiettivo 2.2: interagire con i sensori

Page 20: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Ogni sensore di movimento (accelerometro, bussola, giroscpio, ecc.) è mappato con una classe del namespace Windows.Devices.Sensors

• Tramite il metodo GetDefault() si ottiene un riferimento al sensore: occorre sempre valutare che non sia null

• Tramite il metodo ReadingChanged ci si può sottoscrivere alle variazioni di dati riportate dal sensore

Sensori di movimento

Page 21: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Principali sensori:

• Accelerometro

• Giroscopio

• Bussola

• Inclinometro

• Luce

• Orientation Sensor, che combina i valori ottenuti dagli altri sensori

Sensori di movimento

Page 22: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Richiede l’apposita capability nel file di manifest

• E’ possibile ottenere una localizzazione puntuale oppure ricevere i cambiamenti di posizione

• E’ importante verificare lo stato dei servizi prima di utilizzarli tramite la proprietà Status

Geolocalizzazione

Page 23: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• La classe Windows.Devices.Enumeration.DeviceInformation espone il metodo FindAllAsync() per ottenere i dispostivi collegati

• Tramite un enumeratore che accetta un parametro di tipo DeviceClass, è possibile restringere il campo e recuperare solo dispositivi di una certa categora (audio, video, memorie esterne, ecc.)

• E’ possibile sfruttare la classe DeviceWatcher per essere avvisati quando lo stato del dispositivo cambia (collegato, scollegato, etc.)

Obiettivo 2.3: determinare le capability

Page 24: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Windows 8 supporta un contratto di stampa, attivabile dalla charm bar

Concetti fondamentali:

• Implementare il contatto di stampa

• Creare un template di stampa

• Visualizzare l’anteprima di stampa

• Gestire la paginazione

• Gestire le impostazioni di stampa

• Supportare la stampa dall’applicazione

Obiettivo 3.1: implementare la stampa

Page 25: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Ci si sottoscrivere all’evento PrintTaskRequested della classe PrintManager

• Si crea un task tramite il metodo CreatePrintTask()

• L’oggetto PrintTask offre diversi eventi per gestire i vari stati della stampa:

• Previewing

• Progressing

• Completed

• Submitting

• E’ possibile sfruttare lo XAML per creare un template personalizzato per la stampa

Implementare la stampa

Page 26: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il contratto PlayTo consente di inviare lo streaming audio e video di un’applicazione ad un dispositivo in rete, come una Xbox o una TV

Concetti fondamentali:

• Registrare l’applicazione con il contratto PlayTo

• Utilizzare la classe PlayToManager per inviare lo streaming

• Registrare l’applicazione come receiver del contratto PlayTo

Obiettivo 3.2: supportare il contratto PlayTo

Page 27: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Si utilizza la classe PlayToManager e ci si sottoscrive all’evento SourceRequested

• Nell’evento si chiama il metodo SetSource() e si passa l’oggetto MediaElement con il contenuto audio e video da inviare

• L’applicazione può anche usare la classe PlayToReceiver se vuole ricevere contenuti in streaming da un altro device

Il contratto PlayTo

Page 28: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Windows supporta la possibilità di ricevere notifiche push inviate dal Windows Push Notification Service (WNS)

Concetti fondamentali:

• Creare e salvare un canale per le notifiche

• Autenticarsi con il WNS

• Inviare notifiche dal WNS

Obiettivo 3.3: inviare notifiche push

Page 29: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Si chiama il metodo CreatePushNotificationChannelForApplicationAsync() della classe PushNotificationChannelManager

• Si ottiene l’Uri del canale, da salvare in locale e nel backend del vostro servizio

• L’applicazione server invia, tramite una POST HTTP, un pacchetto con l’XML che definisce la notifica

Registrare il canale

Page 30: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Il servizio di backend deve autenticarsi con il WNS

• Package Security Identifier e Client Secret vengono forniti dal Dev Center in fase di creazione del pacchetto

• Quattro tipologie di notifiche:• Toast

• Tile

• Badge

• Raw (possono essere intercettate solo da un background task)

Inviare una notifica

Page 31: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime offre diversi meccanismi per realizzare UI reattive e in grado di rispondere velocemente alle interazioni dell’utente

Concetti fondamentali:

• Scegliere una strategia asincrona per l’applicazione

• Implementare la Task Parallel Library (TPL)

• Convertire operazioni asincrone in Task

Obiettivo 4.1: realizzare una UI reattiva

Page 32: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• In passato si usavano le callback:• Ci si sottoscrive ad un evento che viene invocato quando l’operazione

è terminata

• Si avvia l’operazione

• Ora si usano async e await, che consentono di scrivere codice in maniera sincrona, ma che dietro le quinte viene eseguito su thread differenti da quello della UI

Gestire operazioni asicrone

public async Task Operation(){

StreamReader sr = new StreamReader(@"document.txt");string text = readTask = await sr.ReadToEndAsync();DisplayText.Text = text;

}

Page 33: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Il metodo che invoca operazioni asincrone deve essere marcato con la parola chiave async

• Il metodo asincrono deve essere invocato con il prefisso await

• Un metodo asincrono deve sempre restituire Task o Task<T>

• Unica eccezione concessa: gli event handler, dato che sono metodi di tipo fire & forget

Gestire operazioni asincrone

Page 34: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Possibilità, tramite la classe Progress, di tracciare lo stato di avanzamento di un Task

• La classe Task offre metodi per avviare operazioni asincrone multiple in parallelo:

• WhenAll() termina quando tutti i task sono stati completati

• WhenAny() termina quando almeno un task è stato completato

Operazioni asincrone avanzate

Page 35: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Animazioni e transizioni sono fondamentali per creare UI reattive e piacevoli da utilizzare

Concetti fondamentali:

• Sfruttare le animazioni incluse nel runtime

• Creare animazioni e transizioni personalizzate

• Implementare storyboard e trasformazioni

• Utilizzare animazioni predefinite per i controlli

Obiettivo 4.2: creare transizioni e animazioni

Page 36: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• La classe Storyboard consente di definire diversi tipi di animazioni che possono essere controllate in dettaglio

• Diverse tipologie di animazioni, legate al tipo di proprietà da animare (numeri, coordinate, colori, ecc.)

• Il Windows Runtime include molte animazioni predefinite e funzioni matematiche per realizzare animazioni complesse (rimbalzo, dissolvenza, ecc.)

Animazioni

Page 37: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Le transizioni sono animazioni speciali che vengono automaticamente applicate ad un controllo in seguito ad un evento (caricamento della pagina, aggiunta di un elemento ad una lista, ecc.)

• Non è possibile controllarle in maniera avanzata come le animazioni

• Ricca libreria di transizioni incluse nel Windows Runtime

Transizioni

Page 38: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

I custom controlo sono il meccanismo dello XAML che consente di creare controlli personalizzati, in aggiunta a quelli nativi

Concetti fondamentali:

• Scegliere il controllo base corretto come punto di partenza

• Definire lo stile del controllo tramite i template

Obiettivo 4.3: creare controlli personalizzati

Page 39: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Un custom control è simile ad una pagina, ma vive di vita propria e può essere incluso in altre pagine

• E’ composto da un file XAML e da una classe di code behind

• Tramite dependency property, è possibile definire e aggiungere nuove proprietà che ne definiscono l’aspetto e il comportamento

Custom control

<local:MyCustomControl Width="300" Height="300"ImagePath="Assets/logo.png" ImageLabel="http://www.microsoft.com" />

Page 40: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• I VisualState permettono di definire i differenti stati visuali che può assumere un controllo (es: Normal, Pressed, Disabled)

• Sono definiti nello XAML ed esprimono le differenze rispetto allo stato base

• Da codice si usa la classe VisualStateManager per passare da uno stato all’altro

Visual State

Page 41: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Per ottenere maggiore visibilità, è importante rendere l’applicazione il più facilmente fruibile anche da persone provenienti da paesi diverso dal nostro

Concetti fondamentali:

• Sfruttare i file .resw per gestire le traduzioni

• Supportare diversi sensi di lettura

• Gestire data e ora nella maniera corretta

Obiettivo 4.4: gestire la localizzazione

Page 42: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• I file .resw sono dei file XML che consentono di memorizzare coppie di chiave / valore

• La chiave è definita da un nome seguito dal nome della proprietà che si vuole valorizzare, separati da un punto (es: MyLabel.Text)

• Si associa la risorsa nello XAML tramite la proprietà x:Uid (es: x:Name=«MyLabel»>

• Possibilità di usare immagini localizzate tramite una naming convention per la cartella (Images/en-us/logo.png)

Localizzare l’applicazione

Page 43: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime supporta molte tecniche per salvare i dati della propria applicazione

Concetti fondamentali:

• Determinare quale tipo di dato si deve salvare

• Definire dove e quando salvare i dati

• Selezionare il meccanismo di salvataggio più corretto

Obiettivo 5.1: gestire il salvataggio dei dati

Page 44: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Local: i dati sono persistiti e accessibili solo dall’app stessa

• Roaming: i dati sono sincronizzati tramite OneDrive tra diversi dispositivi

• Temporary: i dati possono essere eliminati dal sistema in caso di necessità

Local e roaming offrono un meccanismo per gestire in maniera semplice le impostazioni dell’applicazione

Le tipologie di storage

Page 45: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Storage locale

• Librerie di sistema (foto, musica, video, ecc.)

• OneDrive

• Database e soluzioni storage di terze parti (es: SQLite)

• Cloud

Strategie per il salvataggio dei dati

Page 46: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime offre alcune classi per interagire con il file system del dispositivo.

Concetti fondamentali:

• Gestire gli stream

• Utilizzare le classi StorageFile e StorageFolder

• Utilizzare i picker

• Accedere alle librerie di sistema

Obiettivo 5.2: leggere e scrivere dati dal file system

Page 47: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• FileOpenPicker: consente di accedere al disco dell’utente e importare, all’interno dell’app, il file selezionato

• FolderOpenPicker: consente di accedere al disco dell’utente e avere accesso, all’interno dell’app, ad una cartella

• FileSavePicker: consente di esportare un file dell’applicazione all’interno del file system

Non sono API ad accesso diretto: è richiesto l’intervento dell’utente

I file picker

Page 48: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Ogni libreria è collegata ad una specifica capability nel file di manifest

• Le librerie sono esposte dalla classe KnownFolders

• Sono ad accesso diretto, quindi è possibile utilizzare le classi StorageFile e StorageFolder come se fossero file locali

Accedere alle librerie di sistema

Page 49: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Tramite il file di manifest, è possibile associare l’applicazione ad una o più estensioni di file

• Quando un’altra applicazione vuole aprire un file di questo tipo, viene invocata la nostra applicazione, la quale riceve il file aperto

• Il file aperto viene ricevuto dagli eventi di attivazione dell’applicazione

Associazione ai file

Page 50: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime offre delle API per salvare i dati confidenziali in maniera sicura.

Concetti fondamentali:

• Criptaggio dei dati

• Gestione dei certificati

• Criptaggio tramite certificati

Obiettivo 5.3: dati e sicurezza

Page 51: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il namespace Windows.Security.Cryptograhpy offre una API per criptare i dati utilizzando gli algoritmi più diffusi.

• Hash

• Generazione casuale di numeri e dati

• Algoritmi MAC (Message Authentication Code)

• Firma digitale

Criptaggio dei dati

Page 52: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime offre delle API per offrire agli utenti la possibilità di provare la vostra applicazione prima di acquistarla.

Concetti fondamentali:

• Implementare trial temporali

• Implementare trial con limitazione di funzionalità

• Implementare in-app purchase

• Migrare un’applicazione da trial a full

Obiettivo 6.1: Implementare la modalità trial

Page 53: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• L’abilitazione della modalità trial viene definita in fase di submission sul Dev Center

• E’ possibile impostare una data e ora di scadenza: l’applicazione cesserà automaticamente di funzionare scaduto tale termine

• Tramite la classe LicenseInformation è possibile scoprire:• ExpirationDate: la data di scadenza (se si vuole mandare avvisi all’utente)

• IsTrial: se l’applicazione è in esecuzione in modalità trial (se si vogliono disabilitare delle feature)

• La classe offre un metodo per avviare l’acquisto della versione full direttamente dall’app

Aggiungere la modalità trial

Page 54: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• E’ la possibilità di acquistare prodotti dall’applicazione stessa

• La classe LicenseInformation offre tutte le API necessarie per:

• Recuperare l’elenco dei prodotti disponibili

• Avviare la procedura di acquisto

• Verificare se un prodotto sia stato acquistato o meno

• Due tipologie di prodotti acquistabili:• Durable: una volta acquistato, la licenza viene mantenuta a vita.

• Consumable: una volta acquistato, è possibile riacquistarlo nuovamente.

In-app purchase

Page 55: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• All’interno dello storage è possibile configurare un file chiamato WindowStoreProxy.xml che contiene la definizione di prodotti, prezzo dell’app, ecc.

• Nell’applicazione reale, si usa la classe CurrentApp per interagire con i servizi dello Store

• Nell’applicazione di testi, si sua la classe CurrentAppSimulator che recupera i dati da questo file di proxy.

Simulare gli acquisti

Page 56: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Windows Runtime offre gli strumenti necessari per gestire gli errori ed evitare crash improvissi durante l’utilizzo dell’app

Concetti fondamentali:

• Realizzare l’app in modo che l’utente finale non veda mai errori od eccezioni

• Gestire gli errori nelle procedure asincrone

• Gestire gli errori dovuti alle capability

Obiettivo 6.2: gestire gli errori

Page 57: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Le keyword try / catch vi permettono di racchiudere i blocchi di codice che potrebbero generare degli errori

• Mai catturare le eccezioni senza fare nulla (in gergo, soffocare)

• Usare try / catch per gestire scenari che potrebbero fallire, non per risolvere errori di programmazione o progettazione

Gestire le eccezioni

Page 58: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Se non si usano i metodi asincroni nella maniera corretta (async e await) le eccezioni non vengono intercettate

• I metodi marcati come async void non sono in grado di riportare l’eccezione al Task, perchè non vengono aspettati

• In caso di esecuzione di più task in parallelo, le eccezioni vengono memorizzate all’interno di una AggregrateException

Gestire le eccezioni asincrone

Page 59: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Visual Studio offre dei meccanismi per testare le applicazioni e rilevare potenziali problema prima della pubblicazione.

Concetti fondamentali:

• Unit testing

• Coded UI test

• Test di performance e di carico

Obiettivo 6.3: adottare una strategia di testing

Page 60: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

• Unit test: test di tipo che verifica la correttezza delle routine incluse nel codice della nostra applicazione.

• Test funzionale: verifica che l’applicazione esegua i task per cui è stata progettata

• Test di integrazione: verifica che tutte le componenti dell’applicazione funzioni correttamente tra di loro

• Coded UI: test automatici di utilizzo dell’interfaccia utente

Tipologie di test

Page 61: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Visual Studio offre strumenti per monitorare, in tempo reale, il consumo di CPU, memoria, ecc. dell’applicazione

Concetti fondamentali:

• Effettuare il profiling dell’applicazione

• Efettuare il log degli eventi

Obiettivo 6.4: profiling e monitor dell’applicazione

Page 62: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Tool di profiling

Page 63: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Il Dev Center offre una serie di report che possono aiutare a identificare e risolvere problemi

• Dump e stack trace dei crash

• Numeri di download e vendite

Il Dev Center

Page 64: 70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#

Grazie a tutti per la partecipazione

Riceverete il link per il download a slide e demo via email nei prossimi giorni

Per contattarmi

[email protected]

Twitter: @qmatteoq

Grazie