Come abbiamo avuto modo di vedere in questo speciale, e in particolare nell'articolo introduttivo al .NET Framework 4.5, in C# e Visual Basic abbiamo ora a disposizione le keyword async/await per invocare metodi asincroni con una sintassi estremamente concisa. Grazie ad ASP.NET 4.5, siamo in grado di sfruttare questa peculiarità anche negli HttpHandler asincroni.
Abbiamo già trattato gli HttpHandler asincroni nello script 897, mostrando come essi rappresentino lo strumento ideale da utilizzare quando dobbiamo eseguire un'operazione potenzialmente lunga, quale una chiamata ad un server esterno: in questo modo, infatti, il runtime è in grado di riutilizzare il thread per altri scopi, riattivando poi l'handler solo nel momento in cui effettivamente tale operazione si è conclusa.
Una novità di ASP.NET 4.5 è costituita dalla classe astratta HttpTaskAsyncHandler che implementa internamente tutta la logica di gestione del callback e ci permette, grazie al metodo ProcessRequestAsync, di sfruttare async e await come nell'esempio in basso:
public class SampleAsyncHandler : HttpTaskAsyncHandler { public override async Task ProcessRequestAsync(HttpContext context) { using (var stream = new StreamReader("myFile")) { // questa chiamata avviene in maniera asincrona var content = await stream.ReadToEndAsync(); // qui il contenuto del file è stato letto e posso utilizzarlo } } }
Come possiamo notare, il grande pregio di async e await è che il codice che scriviamo è praticamente lo stesso di un'invocazione sincrona, senza però a rinunciare a tutti i benefici che la programmazione asincrona è in grado di fornirci, in termini di scalabilità e di miglioramento delle prestazioni generali del nostro sistema.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Blazor <3 Javascript
Creare un account Azure Cosmos DB gratuito
An introduction to the strange APIs of IndexedDB
Selezione e configurazione degli agent nelle pipeline di Azure DevOps
Autenticazione condizionale a due fattori con Azure Active Directory B2C
Taggare automaticamente un team member in work item tramite Azure DevOps
Creare un controllo Expander in un'app Xamarin Forms
Aggiungere una GIF in un'applicazione Xamarin Forms
Caricare le immagini di una pagina in lazy loading con Angular
Le novità di ASP.NET Core 5
Progressive Web Apps with Blazor and Azure
A quick tour around Azure Dev Spaces
I più letti di oggi
- Specificare un constraint per TypeParam di un componente Blazor generico
- Learn&Get 'Applicazioni del mondo reale con ASP.NET 2.0' - Milano
- il 18/02 c'è il #container & #devops day! https://aspit.co/ContainerDevOpsDay-21 Le iscrizioni sono sempre aperte e la Call For Paper è attiva fino al 28/01! #aspilive #cfp
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!