Abbiamo sottolineato più volte come l'esecuzione asincrona di metodi potenzialmente lunghi porti dei benefici importanti a livello di scalabilità del sistema: in questo modo, infatti, il task da eseguire viene preso in carico da un worker thread, così che nel frattempo il thread utilizzato dal server per rispondere alla request possa essere allocato per evadere un'ulteriore richiesta.
Grazie alle keyword async e await e al nuovo supporto di Entity Framework 6, possiamo facilmente sfruttare questa tecnica di sviluppo anche nel caso dell'accesso ai dati. Per esempio, se dobbiamo visualizzare le informazioni di una particolare Person, possiamo implementare la action seguente:
public async Task<ActionResult> Edit(int id) { Person person = await db.People.FindAsync(id); if (person == null) { return HttpNotFound(); } return View(person); }
Nel codice in alto, in particolare, oltre ad aver dichiarato il metodo come async (restituendo quindi un Task
Nel caso del salvataggio, l'esempio è assolutamente analogo, garzie all'uso di SaveChangesAsync in luogo di SaveChanges:
[HttpPost] public async Task<ActionResult> Edit(Person person) { if (ModelState.IsValid) { db.Entry(person).State = EntityState.Modified; await db.SaveChangesAsync(); RefreshHub.Refresh(); return RedirectToAction("Index"); } return View(person); }
Come possiamo notare, grazie alle keyword async/await, il codice da scrivere non presenta alcuna complessità aggiuntiva rispetto alla versione sincrona: pertanto è assolutamente conveniente usare questa tecnica fin da subito.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Creazione di componenti personalizzati in React.js con Tailwind CSS
Semplificare il deployment di siti statici con Azure Static Web App
Load test di ASP.NET Core con k6
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Utilizzare il trigger SQL con le Azure Function
Utilizzare gli snapshot con Azure File shares
Sfruttare lo streaming di una chiamata Http da Blazor
Creare form tipizzati con Angular
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Eseguire attività con Azure Container Jobs
Come EF 8 ha ottimizzato le query che usano il metodo Contains
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Chat con gli MVP italiani di ASP.NET
- Leggere una chiave di un cookie con ASP.NET
- Estrarre dati randomici da una lista di oggetti in C#
- Utilizzare i Behaviors nelle Windows Store app
- Utilizzare tipi complessi con le Profile API