Introduzione allo sviluppo per dispositivi mobili

di Michele Locuratolo - Microsoft MVP

In questa pagina

Introduzione Introduzione
I dispositivi mobili I dispositivi mobili
Windows Mobile 5.0 Windows Mobile 5.0
Le novità del Compact Framework 2.0 Le novità del Compact Framework 2.0
Gli strumenti di sviluppo Gli strumenti di sviluppo
Conclusioni Conclusioni

Introduzione

I dispositivi mobili, al giorno d’oggi, rivestono un ruolo sempre più importante tanto nelle aziende quando nella nostra vita privata, permettendoci di compiere operazioni e svolgere dei compiti che, fino a qualche anno fa, erano eseguibili solo attraverso un normale PC.

Non è raro oggi incontrare, in un comune bar, un rappresentante che acquisisce gli ordini direttamente su un Pocket PC e li invia direttamente in azienda sfruttando una connessione GPRS o UMTS, riducendo i tempi di lavoro e, di conseguenza, aumentando potenzialmente il volume d’affari.

Il nostro compito, in quanto sviluppatori, è quello di realizzare applicazioni non solo funzionanti nel senso stretto del termine ma funzionali e usabili su questa tipologia di dispositivi.
In questo primo articolo inizieremo a capire quali sono le possibilità offerte da questa piattaforma e quali i vincoli maggiori di cui tenere conto durante la progettazione di una soluzione per dispositivi mobili.

 

I dispositivi mobili

Con il passare del tempo, l’evoluzione tecnologica che ha accompagnato lo sviluppo dei normali PC, ha coinvolto i dispositivi così detti “mobili”. Evoluzione che li ha trasformati da semplici organizer “da tasca” a veri e propri terminali ricchi di funzionalità, discreta potenza di calcolo ma soprattutto di connettività. Quest’ultima caratteristica li ha resi estremamente versatili soprattutto per applicazione di tipo aziendale e di produttività personale.

Esistono sostanzialmente quattro tipologie di dispositivi mobili, ognuna dotata di caratteristiche particolari da tenere in considerazione quando progettiamo le nostre applicazioni:

  • Pocket PC: sono i così detti “palmari”. Tra le principali caratteristiche di questi dispositivi troviamo il display di tipo touch screen, la compattezza, una discreta possibilità di espansione e una discreta potenza di calcolo. I Pocket PC si dividono a loro volta in due famiglie:

  • Standard (non dotati di funzionalità telefoniche)

  • Phone Edition: hanno tutte le caratteristiche dei Pocket PC standard con l’aggiunta delle funzionalità telefoniche.

  • Smartphone: sono dispositivi prettamente telefonici (sia nella forma sia nella modalità di input). Generalmente sono meno potenti dei Pocket PC e non sono dotati di display touch screen. Data la tipologia e il target di questi dispositivi, anche la loro espandibilità attraverso device esterni è limitata.

  • Tablet PC: sono dispositivi molto simili ai normali Notebook ma dotati di touch screen e di funzionalità di riconoscimento della scrittura.

  • UMPC (Ultra Mobile PC): sono una via di mezzo tra il Pocket PC e il Notebook. Più grandi e potenti di un Pocket PC ma più piccoli e meno potenti di un Notebook, sono più orientati verso il mercato consumer che business.

La scelta del device corretto in base alle esigenze specifiche è il primo passo per la realizzazione di un’applicazione funzionale. Tale scelta però, pone dei vincoli che si riflettono sulle applicazioni che andremo a sviluppare. Ad esempio, se il nostro obiettivo è di realizzare un’applicazione per la gestione dei dati in un magazzino, la scelta del device non può ricadere su un dispositivo di tipo Smarphone, date le sue caratteristiche sopraelencate. Viceversa, se il target device della nostra applicazione è uno Smartphone, dobbiamo tenerne necessariamente conto nella progettazione delle applicazioni considerando, ad esempio, il display di dimensioni ridotte e la modalità di inserimento dei dati attraverso il tastierino numerico.

Fatta eccezione per i Tablet PC e per gli UMPC (equipaggiati dal sistema operativo Microsoft Windows XP), i Pocket PC e gli Smartphone sono equipaggiati da una versione dedicata di Windows, denominata appunto Windows Mobile, giunto alla versione 5.0 e di cui è imminente il rilascio della 6.0.

 

Windows Mobile 5.0

Windows Mobile 5.0 è l’ultimo sistema operativo Microsoft realizzato per i dispositivi mobili. Di esso, sono state realizzare tre versioni il cui core è comune, su cui sono state poi inserite le funzionalità adeguate per i dispositivi elencati nel paragrafo precedente.

Le tre versioni sono:

  • Pocket PC Edition: è la versione per dispositivi Pocket PC standard che, come abbiamo visto, non sono dotati di funzionalità telefoniche.

  • Pocket PC Phone Edition: questa versione aggiunge alla precedente le funzionalità telefoniche.

  • Smartphone Edition: è la versione per dispositivi Smartphone (in cui, ad esempio, mancano le funzionalità di input tramite penna).

Dal punto di vista dell’utilizzatore, Windows Mobile 5.0 introduce una serie di migliorie di nuove funzionalità che rende l’utilizzo dei dispositivi mobili più comodo e pratico rispetto alla versione precedente (Windows Mobile 2003). Ma la vera rivoluzione, per noi sviluppatori, è rappresentata dal numero maggiore di API esposte dal sistema operativo. Questa caratteristica rende lo sviluppo di applicazioni per dispositivi mobili notevolmente più rapida e produttiva. Altro punto a favore è l’aumentata compatibilità tra le applicazioni scritte per Pocket PC e quelle scritte per Smartphone rendendo di fatto meno dolorosa la loro migrazione (resta inteso che sarebbe comunque opportuno scegliere adeguatamente la piattaforma).

Tra le più significative API esposte dal sistema operativo troviamo:

  • Funzionalità di telefonia: danno la possibilità di interagire, in modo semplice, con le funzionalità telefoniche dei sistemi Phone Edition e Smartphone

  • Outlook Mobile: semplificano notevolmente l’utilizzo delle funzionalità di Outlook Mobile attraverso applicazioni managed

  • Configuration Manager: fornisce la possibilità di impostare numerosi parametri di configurazione del device attraverso un file xml.

  • Uso della fotocamera: molti dei dispositivi attualmente in commercio sono dotati ormai di una fotocamera integrata. In questa versione di Windows Mobile, le funzionalità di cattura immagini e video esposte. E’ quindi possibile, con estrema semplicità, dotare le nostre applicazioni di funzionalità legate all’uso di questo dispositivo.

  • GPS: sono un set di funzionalità intermedio che permette di accedere con semplicità ai dati GPS. Particolarmente utili quando si ha la necessità di applicazioni che usano ad esempio MapPoint.

  • Integrazione di Active Sync: è ora possibile avviare o sospendere via codice la sincronizzazione dei dati via Active Sync

Sebbene in passato fosse comunque possibile includere, nei nostri software, le stesse funzionalità, si era costretti a lavorare molto con codice unmanaged (non .NET) o usando librerie di terze parti. La più famosa e completa è Smart Device Framework realizzata dal team di www.OpenNetCf.org .
Oggi invece, possiamo rendere i nostri programmi per dispositivi mobili più ricchi di funzionalità in meno tempo. Questo va a tutto vantaggio della nostra produttività e ci permette di scrivere codice migliore e più manutenibile.

Se Windows Mobile 5.0 è l’elemento di base su cui poggiano le nostre applicazioni, il Microsoft .NET Compact Framework è, a livello più alto, l’elemento che ci permette di realizzare i nostri software per dispositivi mobili.

Anch’esso è ricco di nuove funzionalità e migliorie che vedremo nel prossimo paragrafo.

 

Le novità del Compact Framework 2.0

NetCFArch.gif

Figura 1: Architettura di .NET Compact Framework

Windows Mobile 5.0 è solo una delle novità per gli sviluppatori di software per dispositivi mobili. Chi sviluppa su piattaforma Microsoft per normali PC è ormai abituato all’utilizzo di .NET Framework, giunto alla versione 3.0, e di Visual Studio come tool di sviluppo.

Chi, non più di un anno fa, si è trovato a sviluppare in .NET per dispositivi mobili, si sarà accorto di quanto .NET Compact Framework fosse limitato rispetto al fratello maggiore. Tale limitazione, sebbene ovvia visto il tipo di dispositivo da supportare, generava due sentite problematiche:

  • Molte classi presenti in .NET Framework non erano affatto presenti nel .NET CF. Non era raro cercare di fare delle operazioni usando delle classi note su .NET Framework e accorgersi che tali classi non erano disponibili per il Compact Framework.

  • Le classi di .NET CF non supportavano tutte le funzionalità presenti in .NET Framework. Lo sviluppatore abituato a sviluppare per i normali PC doveva assicurarsi che le funzionalità utilizzate fossero supportate.

La prima problematica impattava molto durante la fase di progettazione di applicazioni per dispositivi mobili mentre la seconda emergeva sempre durante la fase di sviluppo.

Con il rilascio della versione 2.0 di .NET Compact Framework, la situazione è notevolmente migliorata anche se non completamente risolta (a causa ovviamente della ridotta potenza di calcolo dei dispositivi mobili). In particolare, in questa nuova versione, è stata notevolmente migliorata la compatibilità con il tradizionale Framework, sia per novità nello sviluppo d’interfacce utente che d’integrazione con il sistema operativo. Oltre al numero maggiore di classi supportate, è stata introdotta compatibilità side by side con .NET Framework (se una classe è presente nel .NET CF, è identica a quella presente in .NET Framework).

L’enorme vantaggio introdotto da questa compatibilità è che, oltre ad essere più semplice individuare classi e metodi, ci permette di riutilizzare i nostri componenti su entrambe le piattaforme. Supponiamo, infatti, di voler sviluppare un software che funzioni sia su un Pocket PC che su un PC Desktop. Se ieri avremmo dovuto sviluppare due versioni distinte di tutti i componenti dell’applicazione, oggi possiamo sviluppare i componenti per la versione per Pocket PC e riutilizzarli (fatta eccezione per l’interfaccia utente) anche per l’applicazione desktop, a tutto vantaggio della produttività e della manutenibilità.

Elencare tutte le novità di .NET Compact Framework esula dallo scopo di questo articolo. Al seguente indirizzo (https://msdn2.microsoft.com/library/aa446574.aspx) (in inglese) è presente un elenco dettagliato delle novità.

Di seguito sono elencate alcune delle funzionalità più importanti introdotte dalla versione 2.0:

  • Notification: è il componente che sfrutta il sistema di notifiche di Windows Mobile per la segnalazione di eventi con dei baloon (stile Windows XP). Oltre alla semplice visualizzazione, questo nuovo controllo permette di gestire un eventuale input di un utente.

  • DocumentList: offre la possibilità di navigare nel file system del dispositivo per compiere operazioni sui file (come la selezione, la copia, l’eliminare).

  • DataGrid per Smartphone: sebbene nella precedente versione di .NET Compact Framework questo componete fosse già presente, era utilizzabile solo su dispositivi di tipo Pocket PC. Con .NET CF 2.0 è disponibile anche per SmartPhone.

  • Splitter e Toolbar: assenti nella precedente versione, sono state aggiunte.

  • User Control: è un’aggiunta molto importante perché ci permette di sviluppare user control anche per dispositivi mobili. Tali user control potranno essere inseriti nella toolbox e usati in altri progetti.

  • Display and Layout: in questa categoria rientrano una serie di nuove caratteristiche utili a migliorare la gestione dell’interfaccia come control docking, control anchoring, automatic scrolling etc.

  • SqlCeResultSet: fornisce un accesso al Data base Sql Server 2005 Mobile Edition molto più veloce e leggero di un Data Set. SqlCeResultSet può essere usato come Binding Source per i nostri controlli.

  • DataSet: è stato introdotto anche nel Compact Framework questo comodo componente per la gestione disconnessa dei dati. Va usato con parsimonia data la sua complessità e il suo peso in termini di occupazione della memoria.

In Figura 2 è possibile notare la quantità di elementi aggiunti alla toolbox rispetto a quella relativa a Visual Studio 2003 e a .NET CF 1.1 .

ComparazioneToolbox.jpg

Figura 2: Comparazione Toolbox per .NET CF 1.1 e 2.0

Ma il lavoro del team non si è limitato ad aspetti solamente estetici di interfaccia ma ha interessato altri aspetti strutturali e prestazionali di .NET Compact Framework.
Tra le altre funzionalità, possiamo sottolineare le seguenti:

  • Supporto notevolmente migliorato per XML

  • Web Service più performanti grazie alle migliorie fatte a XMLSerializer (si calcola un incremento prestazionale di circa il 30%)

  • Serial Port: introdotto nativamente in questa versione del Compact Framework, semplifica notevolmente lo sviluppo di applicazioni che hanno necessità di interfacciarsi con dispositivi seriali come lettori di codici a barre o RFID.

  • Supporto migliorato per la crittografia

  • Threading: introduce la possibilità di sviluppare applicazioni multithreading anche su dispositivi mobili. Tale funzionalità è decisamente importante al fine di sviluppare applicazioni che non blocchino l’interfaccia utente in attesa del completamento delle operazioni.

  • Performance: in aggiunta a quanto fin ora commentato, in .NET Compact Framework sono stati introdotti significativi incrementi di performance che abbracciano sostanzialmente tutti i campi di applicazione.

All’indirizzo https://msdn2.microsoft.com/library/ms229335.aspx è inoltre presente l’intera class library di .NET Compact Framework 2.0 .

 

Gli strumenti di sviluppo

Per avvalersi di tutte le funzionalità introdotte da Windows Mobile 5.0 e da .NET Compact Framework 2.0 è necessario utilizzare i corretti strumenti di sviluppo. Visual Studio 2005 è lo strumento principale con cui sviluppare applicazioni anche per dispositivi mobili. Di default, possiamo sviluppare applicazioni per dispositivi equipaggiati con Windows Mobile 2003 (Pocket PC e Smartphone) e Windows CE 5.0. Per poter lavorare su Windows Mobile 5.0 è necessario scaricare il relativo SDK per entrambe le tipologie di device:

In aggiunta, è possibile scaricare i relativi language pack, anch’essi per Pocket PC e Smartphone

Una volta installati, sarà possibile selezionare la corretta tipologia di dispositivo dai template di Visual Studio.

 

Conclusioni

La nuova versione del Microsoft .NET Compact Framework, in aggiunta alle nuove API esposte da Windows Mobile 5.0, rende estremamente rapido lo sviluppo di applicazioni per dispositivi mobili, dando la possibilità a noi programmatori di creare applicazioni sempre più ricche e sempre più comode da usare. In questo primo articolo, abbiamo visto per grandi linee quali sono i vantaggi forniti dalla piattaforma Microsoft. Nei prossimi articoli, scenderemo più in dettaglio concentrandoci sullo sviluppo concreto su entrambe le piattaforme.