• Raffaele Fanizzi su LinkedIn

Archives

Archives / 2010 / settembre
  • Sviluppo mobile cross-OS con .NET

    Ultimamente mi sto cimentando nella programmazione per sistemi operativi mobile. In particolare, insieme ad un mio carissimo amico, stiamo tentando di concretizzare qualche progettino destinato al mercato degli smartphone.

    Nella progettazione di queste soluzioni (beh si, non guardatemi male, io di solito inizio dalla progettazione e non scrivendo direttamente codice) abbiamo identificato la seguente architettura:

    • Web Service esposti sul web contenti la logica di business
    • Database server sul web server
    • Applicazione mobile che richiama i servizi e si occupa essenzialmente della visualizzazione dei risultati e di gestire la UI

    A questa organizzazione del lavoro, siamo giunti dopo aver analizzato i seguenti aspetti:

    1. Inserire la logica lato server ci permette di rendere il servizio disponibile su più tipologie diverse di client, cioè essenzialmente su più piattaforme
    2. Inserire la logica lato server ci permette di semplificare al massimo la logica lato client
    3. Inserire la logica lato server ci permette di programmare la logica in C# usando .NET, il che, fidatevi, è un enorme vantaggio

    Il terzo punto in particolare va sottolineato perché se, come abbiamo intenzione di fare noi, si vogliono realizzare applicazioni su iPhone e iPad, è necessario imparare l'objective-c e buona parte della libreria Cocoa. Considerando che gran parte delle applicazioni per smartphone che riportano informazioni, lo fanno parserizzando selvaggiamente pagine HTML, volete mettere quando è semplice farlo utilizzando le API di .NET rispetto al SDK di iOS?

    In realtà stiamo valutando anche la possibilità di scrivere le applicazioni lato client in C# utilizzando Monotouch. Questo ci permetterebbe di rendere l'applicazione facilmente "portabile" anche su Windows Phone 7 e, contestualmente, semplifica non poco effettuare operazioni come le chiamate ai web service che su iOS vanno praticamente costruite a manina. Pensate che nella roadmap di Mono è previsto perfino Monodroid per lo sviluppo in C# per Android :-)

    altro

  • ORM per .NET: un'interessante comparativa

    Nel corso dello sviluppo di un progetto utilizzando l'Entity Framework per il layer di accesso ai dati e LINQ to Entities come formalismo per l'interrogazione del database, mi sono imbattuto in alcuni problemi di performance che mi hanno spinto a fare qualche approfondimento su questa tecnologia per l'accesso ai dati.

    Premetto subito che sto usando il .NET Framework 4 insieme ai POCO come modello, in maniera da slegare la materializzazione degli oggetti dalla specifica tecnologia di accesso ai dati scelta.

    Navigando sul sito di Devart (il database server usato dal progetto è Oracle 11g) ho trovato un link a ORMBattle.NET, un'interessantissimo sito che effettua una comparazione tra molteplici ORM su .NET valutandole l'implementazione di LINQ e le performance.

    I risultati non sono per nulla scontati. Innanzitutto l'Entity Framework non è l'ORM più efficiente del lotto. Si può dire che fornisce un supporto a LINQ nella media, mentre dal punto di vista delle performance è complessivamente il terzultimo. Peggio di lui fanno solo NHibernate e Subsonic.

    Molto interessanti, invece, sono le soluzioni DataObjects.NET e BLToolkit. Quest'ultimo, tuttavia, non può essere considerato un vero e proprio ORM in quanto, da quello che ho potuto vedere, effettua più che altro una materializzazione degli oggetti risultanti da una query. L'effort in termini di configurazione è sicuramente più elevato rispetto alle altre soluzioni e la valutazione di questo aspetto è a mio parere il punto debole della comparativa: non si considera quanto tempo fa risparmiare l'uso di un ORM rispetto ad altro o rispetto a non usarne per niente. E' certamente una valutazione difficile da stimare, ma secondo me non impossibile.

    In fin dei conti che le performance degli ORM siano inferiori rispetto a fare query a botta di DataReader è certamente scontato, ma del resto non è per questo motivo che si utilizzano tali strumenti.

    Sempre nell'ambito del lavoro svolto in questo progetto ho avuto modo di valutare il comportamento del provider di Devart con l'Entity Framework e analizzando le query generate posso serenamente affermare che, a parte cambiare le parentesi quadre con le virgolette e sostituire il token parameter @ con i due punti, altre differenze non ci sono nelle query generate rispetto al provider Microsoft per SQL Server,

    A questo punto mi chiedo: si tratta di una limitazione dell'Entity Framework che non consente ad ogni singolo provider di generare completamente le query oppure i signori di Devart hanno "preso spunto" dal provider Microsoft per realizzare il loro per Oracle?

    altro

  • Internet Explorer 9 beta

    In questi giorni ho avuto modo di dare un'occhiata alla nuova beta di Internet Explorer 9. Beh io direi che questa volta Microsoft sembra aver fatto veramente un ottimo lavoro, il che non è semplice da affermare quando si accosta il nome Internet Explorer ad un qualsiasi aggettivo positivo.

    Ho seguito abbastanza da vicino l'evoluzione di Internet Explorer 9, discutendone in un paio di occasioni anche su Appunti Digitali e ora che ho messo le mani sulla versione beta devo ammettere di non essere rimasto deluso nè dal punto di vista grafico, nè in termini di prestazioni.

    Il primo elemento che mi ha colpito è che al primo avvio mi ha segnato una serie di componenti aggiuntive che rallentavano l'avvio del browser stesso, presentando un bel grafico con la comparazione dei tempi di inizializzazione di ogni componenti. Inutile dire che è stato semplicissimo individuare il problema (una componente della mia scheda TV che ignoravo di avere e che della quale tutt'ora non capisco il ruolo) e risolverlo.

    L'aspetto della UI è molto pulito, direi abbastanza "Chrome style", il che non deve essere visto in modo negativo come avranno già pensato i tanti detrattori di Microsoft, ma piuttosto come una presa di coscienza da parte dell'azienda di Redmond che Google ha avuto una buona idea che valeva la pena riportarla nel nuovo browser esattamente come è accaduto con le ultime versioni di Opera e le ultime beta di Firefox 4. Riprendere uno stile, inoltre, è ben diverso dal copiarlo: Internet Explorer 9 resta ben riconoscibile e con una sua identità.

    Ottime sono le prestazioni, infinitamente migliori di Explorer 8, probabilmente migliori anche delle ultime versioni di Chrome, Opera e Firefox. Per maggiori informazioni in merito vi rimando alla panoramica che ho fatto sul mio post di Appunti Digitali.

    Un'unica nota dolente. Indovinate un po? Proprio il mio nuovo sito ha mostrato problemi di visualizzazione con Internet Explorer 9. E' la prima volta che mi sono affidato completamente ad un software per realizzare lo stile CSS, evitando di perdere tempo per farlo funzionare correttamente su tutte le versioni di Explorer, Firefox, Opera, Chrome e Safari, ed ecco che non funziona su IE9 che è molto più aderente agli standard di quanto non lo fosse la versione precedente. In attesa di trovare il tempo di investigare meglio il problema, ho risolto momentaneamente con il meta tag di compatibilità che fa funzionare il tutto in modalità Explorer 8 anche sull'ultima versione.

    altro

  • Sito versione 3.0

    Eccomi qua con una nuova versione del mio sito web personale. Il mio ultimo post su questo blog vi ha aggiornato sulla mia situazione professionale e se vogliamo il restyling di queste pagine è frutto della volontà di voler meglio rispecchiare tale situazione nella rete.

    Adesso collaboro all'interno di un'organizzazione grazie alla quale mi occupo di consulenza, progettazione, sviluppo e formazione in tutto ciò che concerne lo sviluppo software su piattaforma Microsoft .NET. Ammetto che questa definizione è volutamente oscura visto che molti si chieranno quale è l'organizzazione e quale è il mio ruolo precisamente, ma vi deve bastare al momento. Del resto penso che rispetto alla definizione "The Dark Project" qualche elemento in più ve lo abbia fornito ;-)

    Queste nuove attività, in particolare quelle di sviluppo di un progetto interno all'organizzazione, mi hanno permesso di approfondire notevolmente il .NET Framework 4.0 e, in particolare, Windows Workflow Foundation 4, il nuovo motore per la definizione ed esecuzione di workflow di Microsoft. Se siete interessati a questo ambito, vi consiglio caldamente di dargli un'occhiata in quanto penso che ne rimarrete piacevolmente sorpresi. Al riguardo ho anche scritto un articolo introduttivo su DotNetSide, il primo user group del sud italia dedicato al .NET Framework, al quale ne seguiranno altri.

    Nonostante questo cambiamento, più di stampo professionale che personale (ammesso che una distinzione simile abbia senso nella vita), il presente sito resterà il mio blog personale nel quale vi terrò aggiornati (spero con maggiore frequenza) anche delle mie avventure personali.

    Il sito è stato completamente sviluppato utilizzando ASP.NET MVC 2, tuttavia chi conosce queste API avrà sicuramente notato che rispetto al loro uso canonico, su alcune caratteristiche sono dovuto scendere a patti con il pessimo servizio di hosting che propone Aruba. Noterete, infatti, che le pagine continuano ad avere l'estensione .aspx nonostante le regole di routing di ASP.NET MVC garantiscano il completo disaccoppiamento delle view rispetto alle pagine fisiche deployate su IIS. Beh, andatelo a raccontare ai sistemisti di Aruba e al loro modo di impostare IIS!!! A proposito, conoscete qualche altro servizio di hosting decente che supporti magari il .NET Framework 4.0 e non abbia limitazioni di questo tipo? Se si, fatemelo presente perché alla scadenza di quest'anno ho intenzione di abbandonare Aruba.

    altro