Introduzione allo sviluppo di app per Windows Phone Mango con Visual Basic 2010
a cura di Alessandro del Sole (requisiti: nessuno)Introduzione
Windows Phone 7 è il nuovo sistema operativo per dispositivi mobili di Microsoft, recentemente aggiornato alla versione 7.5 conosciuta come Mango. In questo articolo non ci addentreremo sulle tematiche inerenti il sistema operativo, piuttosto cercheremo di capire come cambia il modo di sviluppare applicazioni per i dispositivi mobili soprattutto per tracciare un percorso per chi proviene da Windows Mobile, creando anche una semplice applicazione di esempio. Al termine della pagina troverete anche alcune risorse utili.Il modello di programmazione
Partiamo dal modello di programmazione: per sviluppare applicazioni per Windows Phone 7, la base è ora Silverlight, l'ormai famosissimo plug-in per applicazioni Web di tipo RIA (Rich Internet Applications). Questo ha due conseguenze vantaggiose per gli sviluppatori: la prima è che finalmente Silverlight entra a far parte del mondo Mobile, ma soprattutto (e questa è la seconda conseguenza) potremo utilizzare concetti che già conosciamo bene, come il linguaggio XAML e i linguaggi managed C# e VB per il code-behind. I concetti descritti in questo articolo si applicano sia alla versione 7.0 che alla 7.5 (Mango), tenendo conto del fatto che Mango è un aggiornamento gratuito per tutti i possessori di un device per cui vi conviene aggiornare il sistema attraverso lo Zune Client. E' altresì importante sottolineare che Silverlight per Windows Phone Mango fa un ulteriore salto, passando dalla versione 3 alla 4 del plug-in. Tra le varie cose, Mango introduce tante succose novità per lo sviluppatore come l'accesso a database locali basati su SQL CE 3.5, risveglio rapido delle app dormienti, accesso alla Web cam, live tile aggiornate e servizi per le notifiche push migliorati.Gli strumenti di sviluppo e di design
Dal lato degli strumenti, invece, si utilizza Microsoft Visual Studio 2010. La buona notizia è che è disponibile anche un'edizione Express, quindi gratuita, per lo sviluppo Mobile, chiamata Visual Studio 2010 Express for Windows Phone. Microsoft ha anche un occhio di riguardo per gli sviluppatori di giochi, per cui viene integrata anche la nuova versione di XNA Game Studio, la piattaforma .NET dedicata allo sviluppo di giochi, finora limitata a PC e XBox e che ora è estesa ai dispositivi. L'idea di fondo è quella di avere un'unica piattaforma con cui produrre, utilizzando lo stesso codice con minime modifiche, giochi per tre distinti tipi di apparecchi. Non vengono trascurati i designer. Microsoft Expression Blend 4 è infatti lo strumento che consente di curare il layout delle applicazioni per Windows Phone 7 e 7.5, oltre che WPF e Silverlight "classico", sfruttando lo XAML. Un'altra buona notizia è che i nuovi tool per Mango offrono il supporto nativo per Visual Basic. Attualmente è possibile provare tutti questi strumenti su un emulatore software di Windows Phone. Gli strumenti di sviluppo disponibili per il download sono disponibili a questo indirizzo ed includono tutto il necessario, incluso XNA Game Studio 4.0 e i componenti per Expression Blend.Nota importante: dovunque si parli di tool di sviluppo per Mango, questi sono etichettati come versione 7.1. La ragione è che "7.5" è solo un numero di versione per l'utente finale, in realtà la versione del sistema operativo è esattamente 7.10.7720.68. Non fate confusione quindi: 7.1 e 7.5 sono esattamente la stessa cosa.
I tool di sviluppo installano anche i template di progetto per Visual Studio 2010, se disponibile, oltre all'edizione Express. Proprio a riguardo dell'edizione Express, è importante sottolineare che se avete Visual Studio 2010 sulla vostra macchina, tale edizione non sarà visibile nell'elenco dei collegamenti all'interno di Start (questo perché tendenzialmente preferirete utilizzare l'edizione superiore). Se volete creare un collegamento manuale, andate in C:\Programmi\Microsoft Visual Studio 10.0\Common7\IDE e create un collegamento per il file VPDExpress.exe. Questo non è chiaramente necessario se l'edizione Express è l'unica sulla vostra macchina.
Creare la prima applicazione
Ipotizziamo ora di voler creare la prima applicazione per Windows Phone Mango. Avviamo Visual Studio 2010 Express per Windows Phone e, nella finestra di creazione di nuovi progetti, all'interno dei template per Visual Basic troviamo una cartella chiamata Silverlight for Windows Phone:
(cliccate sulla figura per vederne l'originale più grande)I modelli disponibili permettono di creare diverse tipologie di applicazioni per Windows Phone; alcuni template sono nuovi e rilasciati in modo specifico per Mango. I più comuni sono sicuramente la Windows Phone Application (applicazione di partenza vuota), Windows Phone Panorama Application (che permette di abilitare lo scorrimento dei contenuti tramite il controllo Panorama) e Windows Phone Databound Application (che offre il supporto per i dati). E' anche disponibile un'altra cartella di progetti, chiamata XNA Game Studio 4 che si presenta come in figura:
![]()
(cliccate sulla figura per vederne l'originale più grande)E' quindi disponibile una serie di template per la creazione di giochi su diverse piattaforme, a partire dai dispositivi fino a XBox passando per Windows. Torniamo alla prima cartella di progetti e selezioniamo il primo, Windows Phone Application. A questo punto la prima cosa da fare sarà specificare la versione di Windows Phone che potrà eseguire la nostra app:
![]()
Selezionando Windows Phone 7.1 la nostra app potrà girare solo su Mango, mentre è ancora possibile selezionare la versione precedente. In questo caso, però, non potremo sfruttare tutte le novità di Mango. Dopo alcuni secondi il designer di Visual Studio si presenta così:
![]()
(cliccate sulla figura per vederne l'originale più grande)Quindi da un lato abbiamo il designer per il dispositivo, con cui possiamo interagire aggiungendo i controlli dalla toolbox, mentre dall'altro lato troviamo l'editor di codice XAML che già ben conosciamo. Se andiamo a spulciare in Solution Explorer, troveremo altrettanta familiarità con questo genere di applicazioni. Notate come il titolo di default sia contenuto in un normalissimo TextBlock. Ora ipotizziamo di voler creare una semplicissima applicazione che sia in grado di aprire un sito Web. I controlli utente necessari, che si evidenziano nella toolbox, sono del tutto familiari. Aiutandoci quindi con la Toolbox stessa, all'interno dello spazio libero sul dispositivo trasciniamo:
- uno StackPanel, poi nidificati:
- un TextBlock
- una TextBox
- un Button
- un WebBrowser
Il tutto si traduce nel seguente codice XAML, editato con l'aggiunta di un nome per i controlli, di margini e di dimensioni:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel> <TextBlock Text="Digita l'URI di un sito:" Margin="5" /> <TextBox Name="AddressBox" Margin="5"/> <Button Width="110" Height="80" Name="GoButton" Content="Vai" Click="GoButton_Click" /> <phone:WebBrowser Name="Browser1" Height="424" /> </StackPanel> </Grid>Modifichiamo anche lo XAML relativo al testo presentato per default:
<!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="La mia prima applicazione" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="Prima pagina" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel>A questo punto Visual Studio si presenta così:
![]()
(cliccate sulla figura per vederne l'originale più grande)Vogliamo ora scrivere un gestore di evento Click per il pulsante, di modo che venga avviata la navigazione del sito Internet immesso dall'utente. E' sufficiente fare doppio click sul pulsante, a questo punto viene mostrato l'editor di codice all'interno di un gestore di evento vuoto, che implementiamo nel modo seguente:
Private Sub GoButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Try If String.IsNullOrEmpty(Me.AddressBox.Text) = False Then Me.Browser1.Navigate(New Uri(Me.AddressBox.Text)) End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End SubCome vedete, quindi, stiamo utilizzando un approccio assolutamente noto, scrivendo codice managed che ci consente di programmare il dispositivo in ottica .NET. E' chiaro che ci sono delle diversità di API, tuttavia l'approccio rimane il medesimo.
Avviamo l'applicazione
Premiamo F5 per lanciare l'applicazione di esempio. A questo punto il debugger di Visual Studio avvia anche l'emulatore di dispositivo, col quale potete eventualmente giocare un po'. Automaticamente viene anche avviata l'applicazione, che si presenta come in figura:La tastiera sul dispositivo compare nel momento in cui posizioniamo il cursore all'interno della TextBox. Si noti che nella realtà si tratta di dispositivi touch, per cui dovrete usare il mouse per cliccare sui tasti. La nota positiva è che, se avete un monitor multi-touch, potete toccare lo schermo del dispositivo e vedere il risultato sull'emulatore! Proviamo quindi a digitare l'indirizzo di un sito e a fare clic sul pulsante. Ecco il risultato della nostra applicazione, funzionante: E' importante sottolineare che non è necessario chiudere l'emulatore, al termine del debug (che può essere interrotto dall'interno di Visual Studio). Questo perché altrimenti, al successivo riavvio dell'applicazione, viene eseguito il reboot del sistema con conseguente perdita di tempo.
Cenni sul test fisico e sul Market Place
Una volta terminato lo sviluppo, l'app va pubblicata sul Market Place di Microsoft. Non c'è altro modo di distribuire l'applicazione se non questo. L'iscrizione al Market Place è a pagamento (all'incirca 100 euro il costo) ed ha una durata di un anno; essa consente anche lo sblocco del proprio dispositivo per poter effettuare il deploy sul proprio telefono e quindi testare l'app sul proprio hardware, cosa non altrimenti possibile. Il processo di pubblicazione richiede, oltre al caricamento del file XAP generato da Visual Studio, l'inserimento di una serie di informazioni che consentono l'individuazione dell'app sul Market Place (es. icone, descrizione, ecc.). L'app passerà poi attraverso un procedimento di certificazione da parte di Microsoft, che di solito richiede un paio di giorni, per poi essere resa disponibile dopo questa fase. Se la certificazione fallisce, viene inviato un report molto dettagliato allo sviluppatore che potrà correggere le parti non aderenti alle specifiche (vedi risorse in basso) e riprovare la pubblicazione.Risorse Utili
Si riporta una serie di risorse utili per lo sviluppo su Windows Phone Mango:
- Off-line training course (Microsoft)
- Esempi di codice ufficiali
- Registrazioni dell'evento italiano su Windows Phone Mango
- Linee guida per la definizione della User Experience
Conclusioni
Avere la possibilità di sfruttare Silverlight per lo sviluppo destinato a Windows Phone è davvero molto comodo, poichè consente di riutilizzare conoscenze già acquisite su questa tecnologia. Si conferma, quindi, come un modello di programmazione di grande successo. In futuro ci saranno altri articoli di dettaglio per imparare a capire caratteristiche interessanti nello sviluppo per i dispositivi. Per ulteriori informazioni potete visitare il mio blog o contattarmi al mio indirizzo e-mail.