Asp.Net



Introduzione         

Eccoci quindi a parlare AspNet, elemento di punta in casa Microsoft per quanto riguarda lo sviluppo orientato al Web. Si tratta infatti di una tecnologia o meglio una insieme di tecnologie, una piattaforma di sviluppo per lo sviluppo di complesse applicazioni web e di web service. In inglese viene definito come Web Application Framework e questo chiarisce del tutto la sua natura. Giunta alla sua quinta incarnazione (anche se la numerazione è 4.5) e pertanto ampiamente testata e ormai diffusa, Asp.Net trova i suoi punti di forza su una serie di fattori, schematizziamo di seguito quelli che, a mio avviso, sono i principali:

1) E' totalmente integrato con .Net. Questo garantisce un grande supporto pratico e teorico e ci permette di appoggiarci sul Common Language Runtime (CLR) e quindi su tutti i servizi che lo stesso offre relativamente, ad esempio, alla gestione della memoria (compreso il garbage collector), dei thread, della sicurezza, della gestione degli errori e delle eccezioni e così via. Non è poco. La struttura di .Net è enorme e non è oggetto di questa presentazione. Ma sulla rete non è difficile trovare tanta documentazione sull'argomento. Una cosa è certa, anche per i nostri scopi: si tratta di una base di partenza potentissima con una grande disponibilità di classi e strumenti pronti all'uso.
2) E' compilato, non interpretato. Esiste una fase di compilazione al primo caricamento della pagina e poi ad ogni eventuale modifica ma solo in quei momenti; la pagina o l'applicazione da lì in poi è disponibile immediatamente per l'uso con grande beneficio dal punto di vista prestazionale. Lo schema di avvio è quello solito tipico dei programmi desktop che vivono nel mondo .Net con la sequenza composta dai seguenti stadi:

codice + compilazione = codice IL
codice IL + compilatore JIT = codice macchina per la piattaforma sottostante

niente di nuovo, pertanto.
3)
In conseguenza del punto 1) è multilinguaggio. Noi useremo C# ma si possono usare, sotto determinate condizioni, altri linguaggi purchè, ovviamente, passino da .Net. Questo è abbastanza importante per attrarre gli sviluppatori.
4) Supporta tutti i browser. Non è male non doversi preoccupare della compatibilità tra i vari browser.
5) Ha una gestione, in termini di installazione e manutenzione, piuttosto facile (non abbassate la guardia però...).

Fondamentale tuttavia è ricordare che Asp.Net è una tecnologia server-side. Tutte le elaborazioni vengono svolte sul server ed il risultato di queste è poi inviato al client sotto forma di codice HTML da visualizzare. Vedremo più avanti in dettaglio la sequenza del dialogo tra client e server ma questo concetto è essenziale portarselo dietro sempre. E' peraltro possibile avere delle elaborazioni client side qualora il client stesso richieda che gli venga inviato codice che poi elaborerà da solo (tipicamente riceverà codice Javascript). In ogni caso il client non è comunque in grado di accedere alle risorse del server. Si parla di isolamento, per quanto rigurda questo aspetto.

L'evoluzione di AspNet segue da vicino quella della piattaforma .Net e tutte le sue novità sono disponibili anche il nostro ambito. Partito un po' in sordina con la versione 1.0 nel gennaio del 2002, dopo che nelle fasi progettazione aveva assunto il nome di Asp+, ponendosi come successore dela tecnologia Asp classica,  questo framework si è via via potenziato una versione dopo l'altra, maturando come prodotto ed inglobando ogni novità del potente motore a cui si appoggia. Sia che si tratti di Linq che di SilverLight tutto, in un modo o nell'altro, è a portata di mano. Non manca ovviamente il supporto ad Ajax e l'integrazione con librerie come Jquery. Insomma, c'è tutto. SilverLight in particolare è assurto rapidissimamente come compagno di merende ideale per Aspnet. A dire il vero, ultimamente, le sue sorti sono un po' in ribasso stante la scelta di Microsoft di appoggiare in toto HTML5 per quanto riguarda il frontend e non solo del mondo web. Non sono affatto certo insomma del suo successo nel medio termine. Ad ogni buon conto, tornando ad Aspnet, questa caratteristica di essere sempre aggiornato e migliorato è, a mio avviso, una ricchezza notevole che, partendo dal framework, coinvolge tutto ciò che vi si appoggia. AspNet, lo ribadisco, non fa eccezione. Il prezzo da pagare, in casi come questo, è che bisogna sempre tenersi aggiornati, visto che il ritmo delle novità è a volte frenetico e che la casa di Redmond sa come creare le giuste attese.

Tra gli altri vantaggi io ne citerei 2; il primo si chiama Visual Studio, uno strumento di sviluppo veloce e di altissimo livello, disponibile anche in valida versione grauita caratterizzata dal suffisso Express. L'altra si chiama MSDN, ovvero la più grande biblioteca on line di informazioni e documentazione su AspNet. Ci aggiungo anche una folta comunità di sviluppatori, segno tangibile del successo raggiunto, dalla quale ho quasi sempre ottenuto risposte più che soddisfacenti.

AspNet ci offre due differenti vie di sviluppo che indicheremo come basata su webforms (il metodo classico) una e identificata dall'acronimo MVC (Model View Controller) l'altra, nata sulla spinta del successo di eccellenti strumenti come Rails. Le vedremo entrambe, premetto che, a mio avviso, il primo approccio è migliore per chi comincia, almeno in linea di massima perchè più semplice ed intuitivo. Il secondo metodo è più "moderno", nasce in fondo partendo dalle esperienze accumulate sul primo ed ha i suoi evidenti punti di forza che metteremo in evidenza a suo tempo. Non mi spingo oltre nella discussione perchè credo che, tutto sommato, spesso prevarrà la soggettività anche se in realtà alcuni contesti sarebbero favorevoli a webforms ed altri ad MVC. Molti dei concetti che incontreremo sono per fortuna coerenti con entrambi gli approcci. Esistono anche sul solito GitHub dei progetti (Nancy, Nina, Martin) non so quanto attivi per realizzare dei framework simili a Sinatra (quello per Ruby) in ambito .Net. Forse non c'entra neanche ma è interessante sottolinearlo visto che si tratta di un approccio innovativo.

Asp.Net è una tecnologia potente e completa e, in quanto tale, anche se apparentemente è piuttosto intuitiva nella realtà è necessario capire che sotto c'è parecchia teoria, esiste un "mondo sommerso" che deve affiorare poco per volta e non è la cosa più facile del mondo. Magari ci arrivemo pian piano ma il tutto va affrontato in piccole dosi. Dato il livello terra-terra che cercherò di tenere nella discussione dell'argomento, farò in modo di ricorrere il meno possibile a Visual Studio e ai suoi automatismi. Come detto è un grande strumento, eccellente ed insostituibile compagno di chi sviluppa professionalmente e probabilmente anche a livello amatoriale. Per i semplici programmi che ho in animo di presentare per favorire l'apprendimento tuttavia è anche eccessivo. E, personalmente, sono convinto che non si riesca ad imparare nessun linguaggio utilizzando solo strumenti tanto potenti che tendono però a nascondere quello sta sotto; certamente si tratta di tools pensati per aumentare la produttività di chi lavora ad un certo livello e svolgono benissimo il loro lavoro in questo senso. Però per far entrare in confidenza con i rudimenti, con le basi, sono certo che sia meglio battere tanto sulla vostra tastiera...