Categories
Uncategorized

Come faccio a pensare a codice asincrono Leslie Ri

TheMummichogblog è un partecipante al Amazon Services LLC Associates programma, un programma di affiliazione pubblicitario progettato per fornire un mezzo per siti per guadagnare tariffe pubblicitarie con la pubblicità e il link al amazon.com. Amazon, il logo di Amazon, AmazonSupply, e il logo AmazonSupply sono marchi di Amazon.com, Inc. o delle sue affiliate.

--------------------------------------------------------------------------------------------------
Booking.com
L'insolenza provoca soltanto contese, la sapienza si trova presso coloro che prendono consiglio.
----------------------------------------------------------------------------------------------

Come faccio a pensare a codice asincrono ?!
Leslie Richardson
Leslie

10 Giugno 2020

Sempre più essenziale per la scrittura di applicazioni reattive, codice asincrono sta diventando sempre più popolare. Purtroppo, la programmazione asincrona aggiunge un ulteriore livello di complessità al codice. Di conseguenza, capire come questo codice funziona ancora può essere difficile non importa il vostro livello di esperienza. Se siete nuovi ad esso o se si desidera solo un aggiornamento, qui è un intro al mondo del codice asincrono!

Qual è il codice asincrono?
Asincrono (asincrona) programmazione permette di eseguire un blocco di codice senza fermarsi (o blocco) l’intero thread in cui viene eseguita l’azione. Un mito comune sul codice asincrono è che migliora le prestazioni, che non è necessariamente vero. Invece, il principale vantaggio di programmazione asincrona è che aumenta il numero di compiti (trasmissione) che possono essere eseguite contemporaneamente, senza dover bloccare il filo dove queste azioni si svolgono.

Si può pensare di codice asincrono sembra un po ‘come il codice multithread. Dopo tutto, molti metodi potrebbero essere in esecuzione allo stesso tempo in entrambi. In realtà, la programmazione asincrona può essere utilizzata insieme con le applicazioni singolari o multithread. Questo significa che si può avere un programma async thread singolo, in cui un thread può eseguire attività simultanee. Al contrario, si può anche avere un’applicazione asincrona multi-filettato, in cui più thread possono ciascuno eseguire più attività simultanee.

Perché dovrei utilizzare il codice asincrono? Esempio per favore!
Per usare un’analogia per dimostrare la programmazione asincrona, prendere in considerazione l’azione di cuocere una torta. Questa azione sarà rappresentato da un filo che sta eseguendo diversi passi (o attività), come illustrato nel codice di seguito. Questo codice è utile, e si avrà ancora una torta gustosa una volta che il metodo è fatto di esecuzione. Tuttavia, poiché tutto il codice è sincrona, ogni linea vengono eseguite in sequenza. In altre parole, sarete in piedi completamente immobile in attesa che il forno alla fine di preriscaldamento. Si potrebbe fare la pastella per la vostra torta nel frattempo!

MakeCake funzione sincrona ()
MakeCake funzione sincrona ()

programma di torta sincrono
programma di torta sincrono

Nella vita reale, in genere si desidera multitasking, rendendo l’impasto mentre i preriscalda forno o fare la glassa, mentre il dolce è da forno. In questo modo aumenta la produttività e consente di cuocere la torta molto più veloce. Questo è dove il codice asincrono viene in aiuto! Rendendo la nostra asincrono codice esistente, possiamo eseguire più azioni per passare il tempo anche mentre siamo in attesa di un compito come cuocere la torta in forno per completare. Per fare questo, abbiamo modificato il nostro codice per includere una nuova funzione chiamata PassTheTime. Questo codice salva lo stato di un compito, inizia a correre un’altra funzione sincrona o asincrona, e recupera il valore della attività salvata quando è effettivamente necessario.

funzione asincrona MakeCake ()
funzione asincrona MakeCake ()

Immagine AsyncCake Run
programma di torta asincrono

Rispetto al metodo MakeCake sincrono che manca di una chiamata di funzione PassTheTime, MakeCakeAsync riesce a completare più attività senza bloccare il filo e riduce il tempo necessario per eseguire l’intero metodo.

Async contro sincronizzazione confronto programma
Async contro sincronizzazione confronto programma

Come faccio a scrivere il codice asincrono in .NET?
Fortunatamente, C # lo rende un “pezzo di torta” per scrivere codice asincrono con il tipo di attività e le attendono e asincrone parole chiave. Il tipo di attività indica al chiamante circa il tipo di valore di ritorno eventuale. Indica anche che altre azioni possono eseguire mentre il metodo chiamante viene elaborato. La parola chiave async consente la parola attendono, che permette il know compilatore che avremo bisogno il valore di ritorno della funzione, ma non subito. Di conseguenza, non abbiamo bisogno di bloccare la chiamata e possiamo continuare a eseguire altre operazioni fino a quando è necessario il valore atteso. Un metodo asincrono sarà inizialmente eseguito in modo sincrono fino a raggiungere una parola chiave attendono. Questo è quando inizia l’esecuzione asincrona.

Ho appena saputo di codice asincrono! Ora che cosa?
Durante l’utilizzo di codice asincrono per cuocere una torta è grande, ci sono molte altre applicazioni reali di utilizzare il codice asincrono. Due degli esempi più comuni includono:

I programmi utilizzando le richieste HTTP – A seconda della richiesta, HTTP chiamate possono richiedere molto tempo per completamente processo. Utilizzando il codice asincrono può consentono di eseguire altri lavori in attesa che il server di rispondere.
HTTP GET esempio di richiesta
HTTP GET esempio di richiesta

I programmi che utilizzano elementi dell’interfaccia utente – applicazioni WPF o qualsiasi applicazione utilizzando i pulsanti, caselle di testo, e altre attività UX si prestano bene alla realizzazione asincrona. Per esempio, un’applicazione WPF prendendo in un file da analizzare può richiedere del tempo. Con questa azione asincrona, è ancora possibile interagire con l’interfaccia utente senza avere l’applicazione completamente congelare mentre si aspetta che la funzione completa.
Ora che sapete le basi della programmazione asincrona, è il momento di migliorare su di essa! Ci sono un sacco di segreto fare e non fare quando si scrive codice asincrono solido. Per una grande risorsa che esplora questi suggerimenti e trucchi, controlla il post di David Fowler sulla programmazione asincrona.

Come tutto il codice, che verrà un tempo in cui avrete bisogno di diagnosticare bug nel programma asincrona. Per informazioni su come eseguire il debug il codice asincrono in Visual Studio, in sintonia per un prossimo post …

Nota a margine: E no, non ho usato l’analogia torta solo perché ho fatto un sacco di cottura di recente. 😉

How Do I Think About Async Code?!

Amazon e il logo di Amazon sono marchi di Amazon.com, Inc., o delle sue affiliate.