Qualche tempo fa parlai dell'implementazione dell'AutoEventWiredUp di ASP.NET sottolineando come riducesse moltissimo le performance e dell'oppurtunità di tenerlo sempre disattivato.
In ASP.NET 2 l'AutoEventWiredUp è ancora di default attivo e soprattutto Visual Studio 2005 a differenza di Visual Studio .NET 2003 lo tiene ancora attivo. Mi sono quindi spaventato e ho verificato cosa fa:
Quando impostiamo a false la proprietà viene emesso del codice nella pagina che sovrascrive TemplateControl.SupportAutoEvents. In funzione di questa variabile ad ogni esecuzione aggancia quindi gli eventi. La differenza sta nel fatto che tenta ancora di creare il delegate alla funzione tramite Delegate.CreateDelegate, ma ora alla funzione è possibile chiedere se generare o meno un'eccezione. Già questo migliora di molto le performance, inoltre mantiene un dictionary di MethodInfo (oggetti reflection) in cache così da non ripetere più l'operazione.
Per non pesare ancora sulla ricerca degli eventi alla quale agganciarsi in presenza di un metodo con il nome corretto, viene poi in aiuto il pattern degli eventi che sfrutta un dictionary nomevento (stringa) / delegate dell'evento. Il lavoro quindi dell'uso dell'AutoEventWiredUp si limita a sfogliare il dictionary contenente i metodi della nostra classe e il dictionary degli eventi.
Insomma, ora va molto meglio anche se personalmente continuerò con l'override dei metodi che scatenano gli eventi e la disattivazione della funzione.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Silverlight e versioni CLR, il 28 agosto 2007 alle 13:49
- Intercettare il reciclo di un'applicazione ASP.NET, il 25 settembre 2006 alle 22:42
- User e custom controls, WebParts, il 15 giugno 2006 alle 20:52
- Capitolo 10 tutto su ObjectDataSource, il 6 giugno 2006 alle 23:03
- ASP.NET 2.0 per tutti: capitolo 9 pronto, il 28 maggio 2006 alle 22:55
- Gestione dei Threads in ASP.NET, il 19 aprile 2006 alle 21:36