ComputerLand

Tu sei qui: Articoli

Notizie dal web

Vincitori del concorso WP7Factor

E-mail Stampa PDF

Dopo accurate verifiche con il team del Marketplace, e con il team che segue gli aspetti procedurali del concorso comunichiamo che i vincitori della seconda fase del concorso WP7Factor sono Gridd, WizardOfWords e Teletext.

Complimenti ai vincitori, ai finalisti e a tutti quelli che hanno segnalato le loro applicazioni ai vari partner!


read full article

Community Links: Orchard CMS: dove cresce ASP.NET MVC - Prima parte

E-mail Stampa PDF

A cura di  Gianluca Esposito, pubblicato 11 maggio 2011

Primo appuntamento con Orchard CMS: un Content Management System (CMS) e blog engine completamente gratuito, open-source e basato su ASP.NET MVC 3.


read full article

Guest post: Sviluppare e testare applicazioni geolocalizzate con GPS Emulator : Seconda Parte

E-mail Stampa PDF

Questa è la seconda parte dell'articolo scritto da Matteo Pagani, MVP Device Application Development.

Dopo l'introduzione vista nell'articolo precedente, siamo pronti ora per realizzare una semplice applicazione che fa uso dei servizi di geolocalizzazione e che andremo a testare utilizzando GPS Emulator.

Location

In questo esempio utilizzeremo i servizi di localizzazione per mostrare a video una serie di informazioni sulla nostra posizione, ovvero:

· Lo stato del segnale

· Data e ora della rilevazione

· Latitudine

· Longitudine

· L'indirizzo

La vista che andremo a definire in questo progetto è molto semplice: si tratta infatti di una serie di TextBlock, inseriti all'interno di una griglia, in cui andremo a valorizzare le informazioni recuperate utilizzando l'oggetto di tipo GeoCoordinateWatcher. La prima colonna contiene un etichetta di riferimento, mentre la seconda il valore vero e proprio.

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="240" />
                    <ColumnDefinition Width="240" />
   
             </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="50" />
                    <RowDefinition Height="50" />
                    <RowDefinition Height="50" />
                    <RowDefinition Height="50" />
                    <RowDefinition Height="50" />
                    <RowDefinition Height="50" />
                </Grid.RowDefinitions>
                <TextBlock Text="Status" Grid.Column="0" Grid.Row="1" />
                <TextBlock x:Name="txtStatus" Grid.Column="1" Grid.Row="1" />
                <TextBlock Text="Timestamp" Grid.Column="0" Grid.Row="2" />
 
60;              <TextBlock x:Name="txtTimeStamp" Grid.Column="1" Grid.Row="2" />
                <TextBlock Text="Latitude" Grid.Column="0" Grid.Row="3" />
                <TextBlock x:Name="txtLatitude" Grid.Column="1" Grid.Row="3"/>
                <TextBlock Text="Longitude" Grid.Column="0" Grid.Row="4" />
                <TextBlock x:Name="txtLongitude" Grid.Column="1" Grid.Row="4" />
                <TextBlock x:Name="txtAddress" Grid.ColumnSpan="2" Grid.Row="5" />
            </Grid>
        </Grid> 

Veniamo ora al codice sorgente vero e proprio della vista. Innanzitutto, come visto in precedenza, definiamo e istanziamo, in fase di inizializzazione della pagina, il nostro oggetto di tipo GeoCoordinateWatcher in base alla configurazione che stiamo utilizzando.

        IGeoPositionWatcher<GeoCoordinate> watcher;
 
        public Location()
        {
            InitializeComponent();
   
0;        
#if DEBUG
            watcher = new GpsEmulatorClient.GeoCoordinateWatcher();
#else
            watcher = new System.Device.Location.GeoCoordinateWatcher();
#endif
            watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
            watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
);
        }

Fin qui non dovrebbe esserci nulla di nuovo: abbiamo inizializzato l'oggetto e ci siamo sottoscritti ai due eventi PositionChanged e StatusChanged. Vediamo cosa succede ogni qualvolta lo stato dei servizi di localizzazione cambia:

        void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
        {
            txtStatus.Text = e.Status.ToString();
        }

Quello che facciamo è molto semplice: tra gli argomenti di ritorno dell'evento c'è un oggetto di tipo GeoPositionStatusChangedEventArgs, che contiene lo stato corrente del segnale GPS. Quello che facciamo è semplicemente visualizzare nel TextBlock di nome txtStatus il valore dello stato.

Vediamo invece cosa succede quando è la posizione rilevata dall'oggetto a cambiare:

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
  &
#160;     {
            txtTimeStamp.Text = e.Position.Timestamp.ToString();
            txtLatitude.Text = e.Position.Location.Latitude.ToString();
            txtLongitude.Text = e.Position.Location.Longitude.ToString();
        }

Anche in questo caso l'evento ha un argomento di ritorno, questa volta di tipo GeoPositionChangedEventArgs, che contiene una proprietà Position, la quale definisce:

·         Una proprietà DateTime di nome Timestamp, con data e ora della rilevazione.

·         Una proprietà Location di tipo GeoCoordinate, che contiene diverse informazioni sulla posizione rilevata. Oltre a latitudine e longitudine, troviamo parametri quali altezza, velocità corrente, precisione, ecc.

In questo esempio, ne ignoriamo la maggior parte e ci limitiamo a visualizzare a video, associandole ai rispettivi TextBlock, latitudine, longitudine e data e ora della rilevazione.

Manca solo una cosa: far partire l'oggetto di tipo GeoCoordinateWatcher, affinchè inizi ad acquisire i dati dal GPS. Per farlo, dobbiamo eseguire il metodo Start esposto dalll'oggetto watcher. Sta a noi definire quando vogliamo eseguirlo: nel progetto di esempio che troverete allegato all'articolo ho inserito un pulsante nell'application bar che, al click, esegue il metodo.

Siamo pronti per testare la nostra applicazione. Portiamoci nella cartella in cui abbiamo scompattato il GPS Emulator (ricordiamoci di ricompilare il progetto, affinchè venga applicata la modifica per utilizzare il corretto separatore dei decimali) ed eseguiamoli con permessi amministrativ i (questo perchè l'applicazione apre un canale HTTP con l'emulatore tramite un servizio WCF).

Ecco come apparirà: 
  image 

Ora lanciamo la nostra applicazione e facciamo partire l'acquisizione dati (premendo il pulsante Start nell'application bar): se tutto è andato a buon fine, lo stato dell'applicazione (mostrato nell'angolo in basso a destra) passerà da No client connected (acompagnato da un semaforo rosso) a Client connected (accompagnato da un semaforo verde).

A questo punto, clicchiamo in un punto qualsiasi della mappa, posizionando così il cursore blu: lo stato del ricevitore GPS, mostrato nella nostra applicazione, passerà a Ready e le etichette con timestamp, latitudine e longitudine verranno aggiornate con le coordinate selezionate.

Possiamo mettere alla prova la nostra semplice applicazione definendo un percorso: per farlo, ci basta definire una serie di waypoint utilizzando il pulsante Add point. Ricordiamoci, prima di impostarlo, di definire alla sezione Time dopo quanto tempo rispetto al punto precedente si vuole che il nostro GPS virtuale passi per quel punto.

A questo punto, definito il percorso premiamo il pulsante Start nella sezione Simulation: il segnale blu inizierà a spostari seguendo il nostro percorso e nella nostra applicazione vedremo le varie informazioni aggiornarsi di volta in volta, in base alla posizione del segnale.

image 

Come risolviamo l'indirizzo?

Vedere la nostra applicazione geolocalizzata prendere vita è stato sicuramente divertente: le informazioni che però abbiamo visualizzato a video in molti casi sono inutili, dato che spesso e volentieri abbiamo bisogno di tradurre le coordinate geografiche in un indirizzo più facilmente comprensibile.

Il framework ci mette a disposizione un classe chiamata CivicAddressResolver che serve proprio a questo: c'è però un piccolo problema al momento. Tale classe è disponibile tra le API di Windows Phone, ma non è attiva: questo significa che qualsiasi coordinata cercheremo di tradurre otterremo un indirizzo vuoto con la proprietà IsUnknown valorizzata a True.

Per ovviare a questo inconveniente, possiamo utilizzare uno dei servizi messi a disposizione da Bing per gli sviluppatori. Nello specifico, utilizzeremo un servizio che, tra le altre cose, ci da proprio la possibilità, data una coordinata geografica, di ottenere un indirizzo comprensibile.

Per farlo, ci basta fare clic con il tasto destro sul nostro progetto, scegliere Add Service Reference e aggiungere il servizio disponibile all'URL

http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc

Diamo un nome al nostro servizio (ad esempio GeoCodeService) e diamo OK: Visual Studio genererà la classe proxy che ci permetterà di utilizzarlo all'interno del nostro progetto.

Una volta completata l'operazione, siamo pronti per chiamare il servizio ogni qualvolta la posizione restituità dall'oggetto di tipo GeoCoordinateWatcher viene aggiornata. Ecco perciò che aggiungiamo all'evento watcher_PositionChanged visto in precedenza le seguenti righe di codice:

    GeocodeServiceClient client = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
            ReverseGeocodeRequest request = new ReverseGeocodeRequest
                                                {
                                                    Location = new GeoCodeService.Location
                                                        {
                      
60;                                     Latitude = e.Position.Location.Latitude,
                                                            Longitude = e.Position.Location.Longitude
                                                        },
                                                    Credentials = new Credentials
                                                                      {
                                      
60;                                   ApplicationId = bingMapKey
                                                                      }
                                                };
            client.ReverseGeocodeCompleted += new EventHandler<ReverseGeocodeCompletedEventArgs>(client_ReverseGeocodeCompleted);
            client.ReverseGeocodeAsync(request);

Innanzitutto definiamo una nuova istanza del GeocodeServiceClient, ovvero il client generato da Visual Studio per comunicare con il servizio. Dato che quando aggiungiamo il servizio vengono configurate automaticamente diversi tipi di binding WCF, andiamo a specificare quale di queste vogliamo usare (nel nostro caso, BasicHttpBinding che è supportato da Windows Phone).

Dopodichè definiamo la richiesta che vogliamo inviare al servizio, istanziando un oggetto di tipo ReverseGeocodeRequest. Tale richiesta conterrà le seguenti informazioni:

·         Le coordinate del luogo che vogliamo convertire in un indirizzo: in questo caso, facciamo un'assegnazione m anuale dato che l'oggetto ritornato come argomento del metodo PositionChanged è di tipo GeoCoordinate, mentre la proprietà che identifica la posizione esposta dal servizio è di tipo Location.

·         Una API key valida per l'utilizzo del servizio: si tratta di una chiave univoca che ci autorizza a chiamare il servizio. Nella prima parte di questo articolo abbiamo visto come ottenerla.

Infine, ci sottoscriviamo all'evento ReverseGeoCodeCompleted, che viene invocato nel momento in cui il servizio ha convertito le coordinate geografiche in un indirizzo.

Per eseguire il metodo vero e proprio chiamiamo il metodo ReverseGeocodeAsync, passando come parametro la richiesta di tipo ReverseGeocodeRequest creata in precedenza.

Vediamo ora il codice che viene eseguito nell'evento scatenato una volta che il servizio ha risolto l'indirizzo:

        void client_ReverseGeocodeCompleted(object sender, ReverseGeocodeCompletedEventArgs e)
        {
            if (e.Error == null && e.Result.Results.Count>0)
                txtAddress.Text = e.Result.Results.FirstOrDefault().DisplayName;
        }

Se non ci sono errori e se l'oggetto Results contiene almeno un risultato, allora valorizziamo il TextBlock  con il DisplayName, ovvero la visualizzazione estesa dell'indirizzo (comprensivo di via, numero civico, cap e città). Se abbiamo bisogno di maggiore granularità è a disposizione la proprietà Address, che definisce una serie di attributi più specifici, come il CAP, la città, il numero civico, ecc.

Rilanciamo ora l'applica zione e facciamo partire nuovamente l'acquisizione dati: selezioniamo un punto sul GPS Emulator (oppure facciamo partire la simulazione di un percorso) e potremo vedere come questa volta verrà visualizzato anche l'indirizzo corrispondente alla posizione scelta.

image 

Qualche indicazione sul progetto di esempio

Questo articolo è accompagnato da un progetto di esempio, che vi mostrerà in concreto quello di cui abbiamo parlato. Vi riporto alcune informazioni importanti:

· Il progetto implementa un altro scenario, di cui non abbiamo parlato nell'articolo, ma che sfrutta gli stessi servizi e la stessa architettura: un controllo Bing Maps per Windows Phone, nel quale andiamo a inserire un segnaposto in base alla posizione restituita da GPS Emulator.

· Il progetto include già GPS Emulator (ricompilato con il fix per i numeri decimali nelle coordinate geografiche) e la libreria GPSEmulatorClient.

· Nel file App.xaml trovate dichiarata una risorsa di tipo string identificata dalla chiave BingMapKey: qui dovrete inserire la Bing API Key che avete ottenuto sul portale sviluppatori di Bing. In automatico, verrà utilizzata in tutti i punti dove è necessaria.


read full article

Community Links: Visual Basic Tips &amp; Tricks

E-mail Stampa PDF

Visual Basic Tips & Tricks

Introduzione ad ADO.NET Entity Framework 4.1, di Antonio Catucci

Entity Framework 4 ha rappresentato un punto importante per quanto riguarda le tecnologie di accesso ai dati, perché ha migliorato la versione precedente (la 1.0) e ha introdotto una serie di funzionalità molto interessanti, come, a esempio, il pattern Model-First che permette di creare un database ex-novo a partire dal modello dati. Questo approccio, insieme al classico Database-First, ha come requisito quello di avere sempre un file di modello EDMX per il mapping delle entità con le tabelle del database.  Recentemente, il team di Entity Framework ha rilasciato un'estensione chiamata Entity Framework 4.1 per introdurre un terzo approccio di sviluppo, diverso da quelli esistenti, chiamato Code-First (noto anche come CodeOnly). In questo articolo viene fatta un'overview di quanto viene aggiunto da Entity Framework 4.1, con particolare riferimento all'approccio Code First.

Le novità del Service Pack 1 per Visual Studio 2010, di Alessandro Del Sole

Microsoft ha recentemente rilasciato il Service Pack 1 per Visual Studio 2010, .NET Framework 4.0, Visual Studio 2010 SDK e Team Foundation Server 2010. Si tratta del primo importante aggiornamento per la piattaforma di sviluppo in circolazione dallo scorso aprile e contiene numerosi miglioramenti. Molti miglioramenti vanno a interessare tutta l'infrastruttura di runtime del Framework 4 e apportano un generale miglioramento alle performance dell'IDE. Altre novità sono invece direttamente utilizzabili dallo sviluppatore e riguardano una serie di strumenti che si aggiungono alla g ià nutrita toolbox messa a disposizione da Visual Studio. In questo articolo viene fatta una panoramica descrittiva delle novità introdotte dal Service Pack 1 dal punto di vista dell'utilizzatore finale, ossia di quegli strumenti aggiuntivi che migliorano la nostra produttività all'interno dell'ambiente di sviluppo.

 

LightSwitch Tips & Tricks

Le novità nella Beta 2 di Visual Studio LightSwitch

Visual Studio LightSwitch è il nuovo tool per sviluppatori di Microsoft, dedicato allo sviluppo rapido di applicazioni Line-of-business. Dopo l'incredibile interesse dimostrato dal pubblico verso la Beta 1, Microsoft ha rilasciato la Beta 2 con licenza Go Live, quindi utilizzabile in produzione. In questo articolo esaminiamo le varie novità introdotte dalla Beta 2, inclusi i cosiddetti breaking-changes rispetto alla prima Beta. Parliamo quindi di nuove caratteristiche, bug fix, cambiamenti nelle applicazioni generate.

Chiariamoci idee e dubbi su Visual Studio LightSwitch

La community LightSwitch Tips & Tricks ha recentemente lanciato una survey all'interno del sito per conoscere l'utilizzo che si sta facendo di queste prime Beta di Visual Studio LightSwitch e quali sono i feedback degli utenti. In questa serie di blog post vengono prese in considerazione tante tematiche emerse all'interno del sondaggio, con approfondimenti tecnici volti a chiarire molti dubbi e aspetti inerenti il nuovo tool. Si parla di migrazione da VBA/VB6/Access, di controlli utente aggiuntivi, di personalizzazioni, di deployment, di integrazione con Visual Studio 2010 e di molto altro.

Business applications on the cloud: Applicazioni LightSwitch su Windows Azure, con SQL Azure

Visual Studio LightSwitch consente di sviluppare rapidamente applicazioni business per desktop, Web e Cloud. Con riferimento a quest'ultimo scenario, LightSwitch consente da un lato l'utilizzo di database SQL Azure come sorgente dati e dall'altro consente il deploy diretto delle applicazioni su Windows Azure, di modo che dati e applicazioni siano ospitati nel Cloud. In questo video viene dimostrato come creare un'applicazione LightSwitch che sia in grado di consumare dati provenienti da un database SQL Azure e come distribuire ed eseguire l'applicazione generata da LightSwitch su Windows Azure.


read full article

Imagine Cup 2011 Finali Italiane Categoria Software Design

E-mail Stampa PDF

clip_image001[6]Post di Giordano Tamburrelli

Imagine Cup 2011, la competizione internazionale che Microsoft svolge ogni anno, alla quale partecipano studenti di tutto il mondo. Lo scopo di Imagine cup è quello di far si che i ragazzi possano portare nuove idee e farsi conoscere!

Il 5 Maggio 2011, si sono tenute le finali italiane di Imagine Cup 2011 per la categoria Software Design presso l'università Ca' Foscari a Venezia, in contemporanea con uno dei più significativi eventi dell'anno la Ca' Foscari Digital Week

La Giuria è stata un mix di successo con profili tecnici e non tecnici: media-guru, professionisti e professori universitari. I progetti presentati sono stati decisamente sopra le aspettative e la giuria è stata combattuta nel decidere i vincitori.

image

"And the winner is:"

Team Neasoft dell'Università Federico Secondo di Napoli. Il Team ha vinto la competizione presentando il progetto OMCR (Oculorum Mutu Computer Regere), un sistema di supporto agli utenti disabili per l'utilizzo del personal computer.

Coming Soon:

Il 9 Giugno avranno luogo le finali italiane delle categorie Game Design e Windows Phone 7 a Bologna, all'interno dell'evento Research To Business.

Stay Tuned! Sorriso


read full article

Guest post: Real Code Day 6 a Firenze il 19 Maggio

E-mail Stampa PDF

Questo guest post è la presentazione dell'evento dei ragazzi di aspitalia.com.

In un modo del software dove la complessità è sempre maggiore, crescendo di pari passo con le sempre numerose esigenze del mercato, produrre software di qualità e che sia al passo con i tempi è diventato sempre più difficile: semplicemente scegliere la tecnologia giusta può rappresentare un problema. Per questo motivo nasce Real Code Day, una conferenza ormai giunta alla sua sesta edizione, che si terrà il 19 Maggio 2011 a Firenze.
Durante la giornata verrà mostrato in modo pragmatico come costruire, in chiave applicativa, l'infrastruttura enterprise da zero. Vengono considerati tutti gli aspetti principali che, solitamente, si devono prendere in considerazione durante la fase progettuale e di sviluppo, portando l'esperienza degli speaker durante il loro lavoro quotidiano.

Per farlo, simuleremo le esigenze di una tipica azienda, che abbiamo chiamato Model Virtual Casting, ModelVC per gli amici, sempre alla ricerca delle soluzioni migliori per semplificare le attività dei propri collaboratori. E cosa c'è di meglio se non scrivere un po' applicazioni a contorno? Non solo web, ma anche mobile web, tablet, Windows Phone, Silverlight, Entity Framework e, come sempre, un occhio di riguardo alle metodologie.

Ecco una carrellata di quello che vi attende nelle sessioni, se sarete dei nostri!

Estendibilità del software: IoC, MEF e dintorni

Dopo un'introduzione teorica riguardante i principi che stanno alla base del disegno object-oriented, in particolare il Dependency Inversion Principle, vi mostreremo come progettare le vostre applicazioni affinché siano estendibili. Arricchiremo il tutto con una serie di esempi pratici basati s ui framework Unity e MEF.

Riccardo Golia vi guiderà alla scoperta di tutto quello che vi siete mai chiesti riguardo l'implementazione architetturale di questi concetti nel mondo reale.

Repository con code-first di Entity Framework

L'accesso ai dati rappresenta uno degli aspetti che più influenza l'efficienza di un'applicazione. Entity Framework rappresenta la soluzione Microsoft per rendere l'accesso ai dati semplice e performante: un O/RM. Con l'uscita di Entity Framework 4.1 Microsoft ha aggiunto la possibilità di eseguire il mapping tra database e classi sfruttando il solo codice. In questa sessione Stefano Mostarda vi mostrerà come sfruttare questa nuova modalità di mapping svelando anche alcuni trucchi per superare ostacoli comuni.

image

Pronti ad accedere ai dati in maniera ancora più semplice ed efficace?

Applicazioni web standard con HTML 5

Avete sentito parlare di HTML 5, ma avete paura che sia l'ennesimo standard che vi obbligherà a rivedere il vostro modo di scrivere applicazioni web? Daniele Bochicchio e Cristian Civera vi faranno cambiare idea e vi spiegheranno come HTML5 e le sue specifiche possano aiutarvi a costruire applicazioni più moderne, oggi. Parleremo di HTML5, web semantico, CSS3, ECMAScript 5 e vedremo come adattare un sito esistente, per migliorarlo.

image

Pronti a vedere il sito web di Model Virtual Casting come non l'avete mai visto prima?

Mobile Web con ASP.NET: Web Forms ed MVC nel palmo di una mano

I dispositivi mobile rappresentano oggi una delle piattaforme più utilizzate da chi naviga in rete e consuma servizi web. Adattere i layout delle nostre pagine alle dimensioni ridotte di uno smartphone, renderle compatibili con le diverse tipologie di browser e mantenere una user experience confortevole anche con un'interfaccia basata su touch sono le problematiche con cui ogni designer deve confrontarsi. In questa sessione, con Marco De Sanctis vedremo quali strumenti possiamo sfruttare per semplificare il nostro lavoro e come integrare in Model Virtual Casting, in maniera il più possibile trasparente, il supporto a questi dispositivi.

Silverlight 5: RIA ed applicazioni desktop

Silverlight si attesta come piattaforma robusta per lo sviluppo di applicazioni desktop, fruibili anche attraverso il web. Nel corso della sessione, con Marco Leoncini e Alessio Leoncini, vedremo come sia possibile realizzare un'applicazione di back-end ben strutturata, che sfrutti le caratteristiche della nuova versione con particolare riguardo alle funzioni disponibili in contesto OOB, cioè come applicazione desktop vera e propria. Inoltre daremo uno sguardo al modello di programmazione 3D, basato su XNA, che possiamo sfruttare per realizzare interfacce utente evolute, ad alto coinvolgimento per l'utente.

image

Sviluppo in team per Windows Phone con XNA e Silverlight

Lo sviluppo per Windows Phone è l'ennesima occasione per mettere alla prova la capacità di lavoro di un team per la riuscita di un progetto. Grazie ad un'architettura basata su MVVM è possibile migliorare il processo di sviluppo e far cooperare figure opposte: sviluppatore e grafico. In questa sessione, con Daniele Bochicchio, Cristian Civera, Alessio Leoncini e Marco Leoncini vedremo, quindi, come far cooperare un team per renderlo il più produttivo possibile, analizzando come è possibile preparare un progetto e consumare i servizi di Model Virtual Casting. Vedremo, inoltre, come in XNA sia invece possibile creare un gioco delegando, anche in questo caso, parti di logiche a più sviluppatori.

image

Windows Phone app contest

Sviluppi app per Windows Phone? Invia la tua app al marketplace di Windows Phone ed iscriviti al contest: puoi vincere un fantastico Windows Phone 7 e 2 copie del libro 'Sviluppare applicazioni per Windows Phone'! E sarai premiato durante la giornata!

Tutte le info sono su questa pagina.

Vi aspettiamo!

Se volete scoprire in dettaglio cosa vi aspetta, iscrivetevi subito a Real Code Day 6! Vi aspettiamo, con tantissime altre soprese!


read full article

Guest post: Sviluppare e testare applicazioni geolocalizzate per WP7 con GPS Emulator : Prima parte

E-mail Stampa PDF

Questo post è stato scritto da Matteo Pagani, MVP Device Application Development. Nei prossimi giorni pubblicheremo anche la seconda parte.

Introduzione

Il team di Windows Phone ha iniziato a rilasciare da un po' di tempo a questa parte una serie di "recipes" (letteralmente, ricette): si tratta di librerie e tool che aiutano lo sviluppatore nell'implementazione di alcune feature e scenari all'interno di una applicazione Windows Phone.

In questo articolo vedremo come usare una di queste "recipe", ovvero GPS Emulator: un'applicazione desktop WPF che, accompagnata da una libreria DLL da includere nella vostra applicazione, vi darà la possibilità di testare le funzionalità di geolocalizzazione stando comodamente seduti alla vostra scrivania.

L'articolo è diviso in due parti: in questa prima puntata vedremo i concetti base sulla geolocalizzazione nelle applicazioni Windows Phone e come utilizzare e configurare GPS Emulator. Nella seconda parte andremo invece a realizzare una semplice applicazione che fa uso dei servizi di geolocalizzazione, che testeremo con GPS Emulator.

Cos'è GPS Emulator?

Testare un'applicazione mobile che fa uso di geolocalizzazione non è semplice: se stiamo sviluppando un'app che ha solamente bisogno di capire a grandi linee in quale luogo ci troviamo è un conto, ma se la nostra applicazione deve tracciare precisamente un percorso (ad esempio, un'applicazione di jogging o un navigatore) il discorso si fa decisamente più complesso. N on possiamo di certo andare in giro con il nostro computer sottobraccio e il debugger di Visual Studio collegato al device J

GPS Emulator è una utilissima applicazione, sviluppata in WPF, che vi mette a disposizione la cartografia di Bing Maps, con la quale potrete cercare luoghi e definire dei punti di interesse. Una volta tracciato un percorso sulla mappa, vi basterà premere il pulsante Start per iniziare una simulazione di tale percorso: l'emulatore di Windows Phone, grazie alla libreria che accompagna il progetto (la quale sfrutta un servizo WCF per la comunicazione) riceverà di volta in volta le coordinate GPS aggiornate in base alla posizione corrente nell'applicazione.

Nella seconda parte di questo articolo andremo a sviluppare una semplice applicazione in cui useremo GPS Emulator per ricavare una serie di informazioni testuali sulla posizione: latitudine, longitudine e indirizzo civico.

Qualche informazione sui servizi di localizzazione di Windows Phone

Windows Phone fa uso di tre sistemi per geolocalizzare la posizione del device:

· Ricevitore GPS integrato: è il metodo più preciso, ma che richiede un maggior consumo di batteria. E' adatto per applicazioni che devono tracciare con precisione gli spostamenti, ad esempio un navigatore satellitare.

· Segnale 3G: questo metodo utilizza la triangolazione del segnale all'interno delle cella dell'operatore mobile a cui siamo collegati per determinare la posizione. Consuma poca batteria, ma è meno preciso, dato che riesce a fornire solamente la posizione approssimativa all'interno della cella. E' adatto per applicazioni che possono funzionare correttamente anche senza una precisione eccessiva (ad esempio, la ricerca dei cinema nella città in cui siamo o un client Twitter).

· Wi-Fi: questo metodo utilizza le informazioni della connessione Wi-Fi a cui siamo collegati per determinare la posizione. E' una via di mezzo tra gli altri due: è abbastanza preciso e non consuma troppa batteria. Il "difetto" principale è che richiede una connessione ad una rete wireless attiva, cosa che, soprattutto in Italia, non è facile avere quando si è fuori casa o fuori ufficio.

La classe GeoCoordinateWatcher

La geolocalizzazione su Windows Phone ruota intorno alla classe GeoCoordinateWatcher: come dice il nome stesso, si tratta di un "watcher", ovvero di un oggetto che rileva gli spostamenti del device e, tramite degli eventi che possiamo sottoscrivere, ci fornisce le coordinate correnti.

La classe GeoCoordinateWatcher nativa di Windows Phone fa parte del namespace System.Device.Location: la libreria che accompagna il progetto GPS Emulator implementa un suo GeoCoordinateWatcher, facente parte del namespace GpsEmulatorClient. Tale classe si sostituisce a quella originale e, invece di ricevere le informazioni dal GPS del telefono, le riceve dall'applicazione GPS Emulator.

Entrambe le classi GeoCoordinateWatcher hanno la stessa architettura ed implementano l'interfaccia IGeoPositionWatcher. Ecco perciò che, usando le direttive di compilazione (come #if e #else), possiamo inizializzare la nostra classe in maniera diversa a seconda del profilo che stiamo usando.

IGeoPositionWatcher<GeoCoordinate> watcher;

#if DEBUG

            watcher = new GpsEmulatorClient.GeoCoordinateWatcher();

#else

            watcher = new System.Device.Location.GeoCoordinateWatcher();

#endif

Questo codice fa sì che, se stiamo compilando l'applicazione utilizzando la configurazione di debug (il che tipicamente avviene durante lo sviluppo), verrà utilizzata la classe facente parte del progetto GPS Emulator. Se invece compiliamo l'applicazione in relea se (tipicamente quando dobbiamo pubblicarla sul Marketplace), verrà utilizzata la classe nativa del framework, facendo sì che vengano utilizzati i servizi di localizzazione del device vero e proprio.

Ora che abbiamo inizializzato l'oggetto, siamo pronti per metterci in ascolto dei due eventi esposti dalla classe:

· StatusChanged: questo evento viene scatenato ogni qualvolta lo stato del ricevitore GPS cambia. Gli stati possibili sono espressi dall'enumeratore GeoPositionStatus, che può assumere i seguenti valori:

o Disabled: i servizi di localizzazione non sono abilitati.

o Initializing: il servizio di localizzazione è in fase di inizalizzazione.

o NoData: il servizio di localizzazione è attivo e funzionante, ma non riesce a reperire informazioni sulla posizione corrente (ad esempio, perchè non c'è copertura).

o Ready: il servizio di localizzazione è attivo e funzionante.

· PositionChanged: questo evento viene scatenato ogni qualvolta il servizio di localizzazione recupera delle nuove informazioni sulla posizione corrente. La frequenza con cui viene scatenato questo evento dipende da due parametri dell'oggetto GeoCoordinateWatcher, ovvero:

o DesiredAccuracy: la precisione con cui vogliamo rilevare il segnale GPS, che può essere Default o High. Rappresenta il tipo di localizzazione tra quelli descritti in precedenza che vogliamo utilizzare.

o MovementThreshold: è la distanza in metri che deve essere coperta prima che i servizi tentino di effettuare una nuova localizzazione.

Una nota importante: l'oggetto GeoCoordinateWatcher implementato nella libreria GPS Emulator non supporta questa due proprietà. Dobbiamo ricordarci perciò, se abbiamo la necessità di utilizzarle, di racchiudere anch'esse in un blocco #if #else #endif, altrimenti riceveremo un errore in fase di compilazione.

Ora che abb iamo compreso cos'è e come funziona la classe GeoCoordinateWatcher, siamo pronti a vedere un esempio concreto di utilizzo.

Preparariamo il progetto di esempio

Per poter utilizzare GPS Emulator, dobbiamo scaricare il progetto alla pagina http://create.msdn.com/en-us/education/catalog/article/GPS-Emulator.

La "ricetta" include l'applicazione vera e propria, la libreria da utilizzare nelle nostre applicazioni più una serie di progetti di esempio.

Una volta scompattato il contenuto, apriamo Visual Studio 2010 (o la versione Express installata con i tool di sviluppo per Windows Phone) e creiamo un nuovo progetto Windows Phone, che sarà la nostra demo.

Dopodichè, aggiungiamo alla soluzione due dei progetti inclusi nella "ricetta", ovvero GpsEmulator (l'applicazione vera e propria) e GpsEmulatorClient (la libreria che fa da tramite tra l'emulatore e la nostra applicazione). Per farlo, ci basta fare tasto destro sulla soluzione e scegliere l'opzione Add, Existing Project. A questo punto ci basta andare a prendere i due file di progetto GpsEmulator.cjsproj e GpsEmulatorClient.cjsproj, che troviamo dove abbiamo scompattato il contenuto della "ricetta".

A questo punto, prima di metterci al lavoro, dobbiamo fare due interventi:

· Apriamo il file App.xaml.cs del progetto GpsEmulator, posizioniamoci all'interno dell'inizializzazione dell'applicazione (per intenderci, dopo App() {) e aggiungiamo la riga

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");

Questo perchè l'applicazione è stata sviluppata senza tenere conto che nel sistema metrico decimale il separatore dei decimale è la virgola. Se perciò stiamo sviluppando un'applicazione su un sistema con impostazioni regionali diverse da quelle americane ( che invece fanno uso del punto), il GPS Emulator non funzionerà, dato che come separatore tra la latitudine e la longitudine viene utilizzato proprio la virgola (il che va in conflitto in caso di valori di posizione contenti decimali). Un metodo alternativo per risolvere lo stesso problema lo trovate in questo post di Michele Locuratolo.

· Aggiungiamo al nostro progetto Windows Phone una reference alla libreria GpsEmulatorClient. Per farlo ci basta cliccare con il tasto destro ul nostro progetto, scegliere Add Reference e selezionare, dall'elenco dei progetti facenti parte della soluzione, la voce GpsEmulatorClient.

Ora che abbiamo predisposto il tutto, ci manca un'ultima cosa per sfruttare appieno GPS Emulator: una Bing API Key. L'utilizzo del controllo Bing Maps all'interno di una applicazione (indipendentemente dalla tecnologia che si sta utilizzando) è soggetto alla richiesta di una API Key, ovvero una chiave che ci permette di "sbloccare" il controllo è sfruttarlo al 100% delle sue funzionalità.

Questa API Key ci servirà per due scopi:

· In GPS Emulator, per poterne sfruttare tutte le funzionalità: essa andrà inserità nel file di configurazione dell'applicazione (app.config) nella chiave BingApiKey.

· Nel progetto di esempio, per avere accesso al servizio esposto da Bing per la risoluzione degli indirizzi civici a partire da delle coordinate geografiche.

Come ottenere una Bing Api key

La Bing API Key è una chiave univoca che ci autorizza ad utilizzare i servizi di Bing all'interno delle nostre applicazioni. Non solo! Se abbiamo intenzione di utilizzare il controllo Bing Maps per Windows Phone, avremo bisogno di questa chiave per "sbloccare" il controllo e utilizzarlo al pieno delle sue funzionalità.

Per ottenerla, dobbiamo r ecarci sul sito https://www.bingmapsportal.com/, registrarci e creare una nuova applicazione. Una volta fatto, avremo la nostra chiave da inserire all'interno della nostra applicazione.

Ecco come fare:

1. Vai all'indirizzo http://www.bingmapsportal.com.

2. Clicca su Create per creare un nuovo account, previo accesso con il proprio Live ID.

image

3. Compila il form nella pagina seguente con le informazioni richieste. I dati obbligatori sono il nome dell'account e l'indirizzo e-mail.

image

4. Una volta completata la registrazione, verrete portati nella vostra area riservata già loggati. A questo punto cliccate sul link Create or view keys disponibile nella colonna di sinistra.

image

5. Nella pagina seguente, specificate i dati della vostra applicazione (scegliendo Mobile alla voce Type) e cliccate su Create key.

image

6. Vi verrà mostrata una schermata riepilogativa come la seguente: all'interno di quello che nell'immagine seguente è evidenziato da un riquadro rosso troverete la vostra chiave.

image

:continua:


read full article

Community Links: ASPItalia Primo appuntamento con le soluzioni Open Source su ASP.NET

E-mail Stampa PDF

Le soluzioni Open Source per ASP.NET: un'alternativa allo sviluppo di applicazioni

A cura di Marco De Sanctis, pubblicato il 4 maggio 2011

In questo primo appuntamento viene presentata una panoramica sulle applicazioni ASP.NET più diffuse e i framework di ultima generazione. Partendo dal Microsoft Web Platform Installer, per l'installazione, potete leggere poi di DotNetNuke, UmbraconopCommerce, mojoPortal e di applicazioni ermergenti come Orchard. Troverete poi un'introduzione ai framework più diffusi e a nuovi soluzioni per la pacchettizazione e distribuzione degli stessi: in particolare  NuGet recentemente aggiunto a Visual Studio 2010 e ASP.NET MVC 3.


read full article

Pagina 57 di 83

 
 
 
 
Certificazioni