Premessa.
Ricordo ancora che la prima volta che vidi un VirtualPathProvider in azione, rimasi folgorato sulla via di Damasco e mi posi subito una domanda: "E che .... ci faccio con sta cosa???" La verve con cui il relatore tedesco mi parlava di questa feature era quella di un uomo che dopo anni aveva finalmente risolto i suoi problemi, ma io ancora rimanevo perplesso.
Situazione.
Verso marzo ho cominciato a lavorare ad un framework che dovrebbe gestire alcune problematiche comuni delle applicazioni web sviluppate nell'azienda in cui lavoro. Un'esigenza è quella di creare un sistema di news con un custom control per visualizzarle ed una pagina per inserirle. Qui scattava il mio dubbio, creare una pagina e copiarla su ogni sito cambiando solo lo stile è una scelta che proprio non mi piaceva, ma non trovavo un modo alternativo soddisfacente.
Soluzione.
Dopo qualche giorno mi sono ricordato della faccia entusiasta del tedesco ed ho finalmente capito perchè. Con il VirtualPathProvider posso inserire la pagina (poi diventata uno usercontrol, in un punto qualsiasi ed utilizzarla in ogni applicazione. Quindi, ho inglobato lo UserControls per inserire le news in un assembly, come risorsa, ed ho creato un VirtualPathProvider che recepisce le richieste per quell controllo. Se ci mettiamo anche un HttpModule che carica il provider quando parte l'applicazione, si riesce a creare un vero e proprio modulo pluggabile.
Conclusione.
Insomma i VirtualPathProviders sono qualcosa che risolve alcuni problemi comuni di pacchettizzazione e non solo. D'ora in poi li userò molto spesso anche se devo capire bene alcuni comportamenti in fase di compilazione, ma credetemi, quando ho parlato ai miei colleghi per la prima volta del VirtualPathProvider avevo la stessa gioia di quel tedescone che mi parlava tempo fa. (ed ovviamente i colleghi mi guardavano un pò allibiti) :D.
Stay Tuned...
è esattamente quello che ho fatto io.
Praticamente puoi mettere un file dove ti pare e recuperarlo tramite virtualpathprovider.
Questo è un articolo molto ben fatto che implementa un virtualpathprovider che legge da zip.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/vpp_vga.asp
Byez
Me lo leggo!
Ti ringrazio, anche per quel programmino che mi hai suggerito: lo sto provando
Ciao!
Ciao stefano, davvero interessante, devo dire che ancora non ho mai utilizzato il VirtualPathProvider, avevo lettò l'articolo ma non avevo pensato alla pacchettizzazione, e per gli UserControl ci sta a pennello :) io che usavo ILMERGE :)
una domanda, l'UserControl viene inserito dinamicamente nella pagina?
ciao marco
perfetto :) grazie mi sono tolto tutti i dubbi, aspetto l'Usag
ciao marco
nostromo wrote:
una domanda, l'UserControl viene inserito dinamicamente nella pagina?
sì, in pratica è un sistema che fa il build da una qualsiasi sorgente. cioè, se scrivi un provider puoi prendere una classe da db, uno zip, un assembly, etc e poi con il giusto build provider, il resto è automatico
era una delle cose che aveva colpito anche me di più, a PDC 2003. vedi pezzetto in fondo al post
http://blogs.aspitalia.com/daniele/post42/Ancora-Novita-ASP.NET-2.0.aspx
interessante, quindi usando VirtualPathProvider un BuildProvider, HttpModule e/o Handler, si possono fare cose spettacolari
altra domanda, dovendo posizionare l'UserControl in una pagina esistente, che modifiche dovrei fare, o meglio posso non fare nessuna modifica alla pagina?
quello che devo capire è se posso intervenire nella fase di build della pagina inserendo quello che mi pare senza modificare una riga dell'esistente, solo utilizzando quanto detto sopra.
mumble sto meditando
nostromo wrote:
quello che devo capire è se posso intervenire nella fase di build della pagina inserendo quello che mi pare senza modificare una riga dell'esistente, solo utilizzando quanto detto sopra.
devi registrare il control come faresti normalmente.
poi crei una classe che recupera il file, con il suo markup e poi registrarla. trovi tutto spiegato nella doc:
http://msdn2.microsoft.com/en-us/library/bhesyfec.aspx
in realtà, più o meno, questa cosa si poteva fare anche con la 1.x, però forse era meno facile se non compilavi tutto prima
cmq, devo farci uno usag!
SM15455 wrote:
cavoli mi hai fregato l'idea.
no dai, te lo cedo che io di idee ne ho segnate almeno altri 30 in un bel file txt
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 


Stefano Mostarda <Stefano_Mostarda> ha scritto:
La cosa non l'ho mai provata, ma dimmi, il virtualpathprovider ti permette di creare uno "specie" di usercontrol utilizzabile da più applicazioni?
Ciao!
Continua »»» | Rispondi »»»