• Raffaele Fanizzi su LinkedIn

Archives

Archives / 2012 / January
  • Orario Treni per Windows Phone è qui

      

    Infine è arrivato, Orario Treni per Windows Phone fa la sua comparsa nel Marketplace di Microsoft. Tutte le funzionalità disponibili per la versione Apple iOS, sono ora a fruibili da coloro che hanno scelto il sistema operativo mobile di Redmond per il proprio smartphone.

    Dal punto di vista dello sviluppo, Orario Treni può vantare le seguenti chicche:

    • design pattern Model View ViewModel per la separazione della logica applicativa dalla definizione dell'interfaccia grafica
    • uso di SQL Server CE 4, per lo storage dei dati sul telefono
    • chiamate WCF a servizi SOAP per il download di tutti i dati consultabili sui treni

    Per coloro che non conoscessero l'applicazione, riassumo brevemente le funzionalità salienti:

    • Soluzioni di viaggio dirette e con cambi, indicando una stazione di partenza e di arrivo
    • Treni in arrivo ed in partenza data una stazione, completo di segnalazione dell'eventuale ritardo
    • Dettaglio di un treno a partire dal suo numero o dalle funzionalità precedenti, che consente di monitorare il percorso del treno, completo di numero di binario e minuti di ritardo per ogni sua fermata
    • Consultazione degli scioperi in atto e previsti su tutto il territorio nazionale nel settore dei trasporti (treni, aerei, trasporto pubblico locale, ecc...)

    Maggiori informazioni sono disponibili nella pagina dedicata del sito.

    Orario Treni richiede necessariamente che il proprio Windows Phone sia stato aggiornato alla versione Mango. Buon diverimento e mi raccomando, se avete consigli e/o critiche costruttive, io sono qua :)

    altro

  • DateTime.Kind e ADO.NET

    Nell'ambito della realizzazione di un sistema cloud based è necessario prestare particolare attenzione alla gestione dei DateTime. Se, infatti, nel deployment di soluzioni on premise è possibile controllare (non sempre, ma spesso si) le impostazioni relative al timezone del server e del client, quando un'applicazione gira dei datacenter di Microsoft, tale controllo non c'è. Potete chiaramente ben intuire quale problema si ponga nel momento in cui il timezone del client sia diverso da quello del server: poiché ADO.NET, quando recupera un DateTime dal database, di default gli imposta la proprietà Kind su Unspecified che, in sostanza, viene trattato lato client come se si trattasse di un valore locale, supponendo che il valore sia stato generato lato server con la chiamata DateTime.Now, capite bene che il rischio di ritrovarsi sul client date locali del server è molto elevato. Per risolvere questo problema esistono vari approcci, ma quello che preferisco è il seguente:

    • Lato server è necessario bandire la chiamata DateTime.Now ed utilizzare piuttosto DateTime.UtcNow
    • Lato server, nel momento in cui si recuperano i dati, è necessario assicurarsi che le date siano DateTime con la proprietà Kind impostata su DateTimeKind.Utc. Se si utilizzano le care vecchie DataTable, vi renderete conto che queste vi restituiscono sempre DateTime con Kind impostato un Unspecified. Per risolvere questo problema è necessario impostare la proprietà DataColumn.DateTimeMode su DataSetDataTime.Utc
    • Lato client, prima di visualizzare o inserire i dati, sarà necessario convertirli da e verso il formato Utc nel formato locale. Il tutto può essere fatto mediante converter in WPF/Silverlight e con apposite formattazioni in ASP.NET

    altro

Archivio Blog