Condividi tramite


Eventi e callback

Nota

Questo contenuto è ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Tale edizione è stata pubblicata nel 2008 e il libro è stato interamente revisionato nella terza edizione. Alcune delle informazioni contenute in questa pagina potrebbero non essere aggiornate.

I callback sono punti di estendibilità che consentono a un framework di richiamare il codice utente tramite un delegato. Tali delegati vengono in genere passati al framework tramite un parametro di un metodo.

Gli eventi sono un caso speciale di callback che supportano una sintassi pratica e coerente per fornire il delegato (un gestore dell’evento). Inoltre, il completamento istruzioni e le finestre di progettazione di Visual Studio forniscono assistenza nell'uso delle API basate su evento (vedere Progettazione di eventi).

✔️ CONSIDERARE l'uso di callback per consentire agli utenti di fornire codice personalizzato da eseguire dal framework.

✔️ CONSIDERARE l'uso di eventi per consentire agli utenti di personalizzare il comportamento di un framework senza la necessità di comprendere la progettazione orientata agli oggetti.

✔️ PREFERIRE gli eventi rispetto ai callback semplici, perché sono più familiari a un'ampia gamma di sviluppatori e sono integrati con il completamento istruzioni di Visual Studio.

❌ EVITARE di usare i callback nelle API sensibili alle prestazioni.

✔️ USARE i nuovi tipi Func<...>, Action<...> o Expression<...> anziché i delegati personalizzati quando si definiscono le API con callback.

Func<...> e Action<...> rappresentano delegati generici. Expression<...> rappresenta le definizioni di funzione che possono essere compilate e successivamente richiamate in fase di esecuzione, ma possono anche essere serializzate e passate a processi remoti.

✔️ MISURARE E COMPRENDERE le implicazioni sulle prestazioni dell'uso di Expression<...>, anziché usare i delegati Func<...> e Action<...>.

I tipi Expression<...> sono nella maggior parte dei casi logicamente equivalenti ai delegati Func<...> e Action<...>. La differenza principale tra di esse è che i delegati devono essere usati in scenari di processo locale; le espressioni sono destinate ai casi in cui è utile e possibile valutare l'espressione in un processo o in un computer remoto.

✔️ COMPRENDERE che chiamando un delegato, si sta eseguendo codice arbitrario e che potrebbero esservi ripercussioni sulla sicurezza, la correttezza e la compatibilità.

Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti sono riservati.

Ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2a edizione di Krzysztof Cwalina and Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional nella collana Microsoft Windows Development Series.

Vedi anche