I build providers di ASP.NET 2.0

di Daniele Bochicchio, in ASP.NET,

Ora che l'articolo sulla beta 2 è pubblicato, posso tornare a scrivere di ASP.NET 2.0, con argomenti che per ragioni di spazio (o di specificità) non ho trattato nell'articolo (anche perchè non sono mai stato un sostenitore degli articoli troppi lunghi, alla fine stancano il lettore).

Cominciamo con una delle novità per quanto riguarda gli Internals, che prende il nome di build providers. Come il nome suggerisce, si tratta di classi che hanno la funzione di "costruire" i vari pezzi della pagina, generando il codice sorgente associato a file .aspx, piuttosto che al web.config o ad un .ascx, pronto per la compilazione. Infatti ne troviamo, praticamente, per tutti i tipi di oggetti di cui un'applicazione è composta, dagli user control fino alle MasterPages (vedi la classe MasterPageBuildProvider).

La loro utilità è duplice. Prima di tutto, sono sfruttati da aspnet_compile.exe per precompilare un sito (e qui, Cristian come sempre è arrivato prima del dev team di ASP.NET :) e quindi renderne notevolmente più rapido, in molti scenari, l'avvio.

In secondo luogo lavorano in design time, quando è necessario ricavare le informazioni da associare all'intellisense. Basta dare un'occhiata alle classi con Reflector per vedere meglio come si comportano.

Costruire un build provider custom è abbastanza semplice. La classe base, da cui i build provider nativi ereditano (sono tutti internal) è BuildProvider, del namespace System.Web.Compilation. Per implementarne uno custom è sufficiente effettuare l'override del metodo GenerateCode. Sugli usi che un build provider può permettere, c'è ad esempio la possibilità di associare, ad una propria estensione (del tipo .content) un build provider che prenda le informazioni da un database, magari salvate in formato XML, e provveda a generare una struttura in XHTML. Più in generale, servono per customizzare al massimo, in fase di compilazione, il comportamento di una qualunque risorsa dell'applicazione.

Una volta creato il provider, va registrato nel web.config:

<compilation>
  <buildProviders>
    <add extension=".content" appliesTo="Code" type="ASPItalia.v2.MyBuilProvider,ASPItalia.v2" />
  </buildProviders>
</compilation>

L'attributo appliesTo fa sì che il sorgente venga preso dalla directory /app_code/ e compilato al volo (è una caratteristica di ASP.NET 2.0). Il resto degli attributi ha un nome che ne spiega le funzionalità a dovere.

Se avete la beta 2, provate ad implementarne uno e capirete perchè, rispetto alla 1.1, non c'è paragone in quanto a flessibilità e controllo delle funzionalità.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese