ASP.NET 2.0: Visual Web Developer, architettura e nuove funzionalità

4 pagine in totale: <<Indietro 1 2 3 [4]

Compilation Model, precompilazione e nocompile mode

Non mi soffermerò troppo sulle differenze che sono state introdotte nel compilation tra le prime build di ASP.NET 2.0 e questa RTM, dato che già al tempo della beta 2 i cambiamenti erano stati annunciati ed implementati.

In pratica il vantaggio più grande di avere la stessa sintassi che è presente nella 1.x è che non è necessario toccare, o quasi, le pagine per poterle migrare alla v2. Lo svantaggio è che la sintassi scelta per farlo è discutibile: la classe del code behind deve ereditare dalla classe Page (o UserControl o MasterPage, a seconda dei casi) anche se in realtà è una partial class. Da questo punto di vista, infatti, ASP.NET 2.0 sfrutta una nuova funzionalità dei compilatori del .NET Framework 2.0, che sono in grado di unire più file (se la classe ha questo modifier) in una sola classe, consentendo appunto di superare il modello della 1.x, dove la parte markup eredita dalla classe del code behind che a sua volta eredita da Page.

All'atto pratico l'unica vera differenza "visiva" rispetto alla versione precedente consiste nell'assenza della dichirazione dei controlli. Se nella 1.x i controlli necessitano di essere dichirati anche nel code behind, perchè markup e codice rappresentano due classi legate da un vincolo di ereditarietà, nella v2 questo non serve perchè i due file, seppur separati, sono uniti in fase di compilazione in un'unica classe.

Buone notizie anche sul fronte del code inline, tanto utilizzato in scenari dove il code behind mostra tutti i suoi limiti: siti web pubblici di un certo traffico, dove il modello di un solo grande assembly con tutto il codice dell'applicazione non è adatto a riflettere i cambiamenti anche frequenti che un'applicazione del genere deve avere.

Se nella 1.x era disponibile, ma non ufficialmente supportato, nella v2 è trattato alla stregua del code behind ed è dunque possibile sfruttare tutte le caratteristiche di VS 2005, come l'Intellisense.

E' poi possibile precompilare le pagine in due modi: direttamente sul server, richiamando l'handler precompile.axd, oppure attraverso il tool a riga di comando aspnet_compiler.exe, che invece si occupa di compilare tutto in un solo (o più) assembly, aggiungendo le risorse necessarie (themes ed immagini, web.config) e consentendo di fare il deployment di pochissimi file. Quest'ultimo scenario è ad esempio utilissimo quando si ha un pacchetto di cui non si vuole consentire facilmente la personalizzazione, piuttosto che in grandi ambienti, dove si facilita il deployment su più server. Il primo, invece, è comodo per evitare che dopo il deployment gli utenti debbano aspettare che ogni singola pagina venga compilata al volo alla prima richiesta, compilandole in blocco.

Dal punto di vista della compilazione ci sono novità per quanto riguarda la possibilità di bypassare il meccanismo che conosciamo nella versione 1.x: il file viene compilato in una DLL soltato alla prima richiesta, salvata su disco, e richiamata le volte successive, fino ad eventuali modifiche o riavvii del worker process.

La nuova opzione, nota come nocompile mode, consente di azzerare questo meccanismo e far sì che ad ogni richiesta ci sia la compilazione. Questo meccanismo è specificamente pensato per siti con migliaia di pagine, dove gli assembly generati sono altrettanti. In questi scenari, infatti, Windows non è in grado di caricare tutte le DLL nell'app domain e quindi le performance degradano notevolmente.

E' dunque stato aggiunto un attributo alla direttiva Page (oltre che alla chiave <pages /> nel web.config) di nome CompilationMode, che può assumere i valori Auto, Never ed Always.

Nel primo caso è ASP.NET a decidere, in automatico, quale tecnica utilizzare per ovviare ai problemi di scalabilità, nel secondo invece la compilazione è disabilitata (e quindi, di fatto, avviene ad ogni richiesta), mentre nell'ultimo si replica esattamente quello che abbiamo nella 1.x.

Sfruttando l'opzione Never, però, non si può usare codice all'interno delle pagine, dato che deve già essere stato tutto compilato e ci sono pertanto limitazioni nell'uso di alcune tecniche che si basano appunto su questa caratteristica.

E' comunque una novità interessante ma che trova applicazione, all'atto pratico, in davvero pochissimi casi. In tutti gli altri il beneficio della compilazione e salvataggio dell'assembly su disco è di gran lunga preferibile.

Dove scaricare il runtime e l'SDK

Come premesso, questa è la prima versione del .NET Framework ad essere distribuita per architetture x86, a 32 bit, ed in versioni a 64 bit, per x64 e IA64. Dunque sia il Framework che l'SDK sono disponibili in 3 diverse varianti:

Conclusioni

Questo articolo è solo una piccola introduzione ad ASP.NET 2.0, che ha l'obiettivo di fornirvi una panoramica molto veloce su quali sono le novità fondamentali. Con la serie che sarà pubblicata questa settimana potrete conoscere da vicino alcune tra le migliori novità di ASP.NET 2.0 e provare con mano concetti che, come nel caso del Provider Model Design Pattern, al momento non hanno ancora un grosso significato, perché non sono sostenuti da esempi pratici.

Per una panoramica delle funzionalità di ASP.NET 2.0, sin dalle prime build, vi consiglio comunque di leggere questo articolo sulla prima preview ed ovviamente quello sulla beta 2.

E non dimentichiamo che, comunque, le applicazioni 1.x sono compatibili al 100% e dunque la migrazione dovrebbe essere quanto più indolore possibile.

Tutti gli articoli dello speciale su ASP.NET 2.0

4 pagine in totale: <<Indietro 1 2 3 [4]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC