Pool di fili
Ho sempre voluto riscrivere il progetto in asincrono, ma ASP.NETMVC3 è troppo macchinoso da scrivere, .NET 4.5 e ASP.NET codice MVC sono relativamente semplici, MS sembra aver sempre amato farlo, ogni cosa matura deve evolvere diverse versioni per tendere a standardizzarsi. ASP.NET perché è necessario usare asincrono in MVC, IIS ha un pool di thread per elaborare le richieste degli utenti; quando arriva una nuova richiesta, i thread del pool vengono programmati per elaborare la richiesta, tuttavia, ma quando la concorrenza è alta, i thread nel pool non possono più soddisfare molte richieste, e ogni thread del pool è occupato durante l'elaborazione della richiesta, il thread che elabora la richiesta verrà bloccato e il thread non potrà fornire servizi a un'altra richiesta; se la coda delle richieste è piena, il web Il server rifiuta la richiesta ed è in uno stato di occupazione HTTP 503. Se hai a che fare con una latenza elevata, come operazioni di rete, la maggior parte di questi thread aspetta semplicemente lo stato e non fa nulla la maggior parte del tempo; tali thread possono usare la programmazione asincrona per sfruttarla meglio.
Elaborazione asincrona
Ad esempio, se una richiesta genera una chiamata di rete che richiede due secondi per essere completata, la richiesta viene effettuataCi vogliono due secondi per essere eseguita sia in modo sincrono che asincrono。 MaDurante una chiamata asincrona, il server non blocca la risposta ad altre richieste mentre attende che la prima richiesta venga completata。 Pertanto, quando ci sono molte richieste che chiamano operazioni di lunga durata, le richieste asincrone possono impedire che le richieste vengano messe in coda. In .NET 4.5, il pool massimo di thread è 5000, e le parole chiave await e async sono state aggiunte anche in .NET 4.5 per semplificare la programmazione asincrona.
Sincrono o asincrono (estratto dalla MSDN)
- Tipicamente, le pipeline di sincronizzazione vengono utilizzate quando sono soddisfatte le seguenti condizioni:
- Funzionamento semplice o durata breve.
- La semplicità è più importante dell'efficienza.
- Questa operazione riguarda principalmente operazioni CPU piuttosto che operazioni che comportano un grande sovraccarico di disco o rete. Usare un metodo operativo asincrono per operazioni legate alla CPU non fornisce alcun beneficio e comporta anche un sovraccarico maggiore.
In generale, le pipeline asincrone sono utilizzate quando sono soddisfatte le seguenti condizioni:
- Le operazioni sono legate alla rete o I/O piuttosto che legate alla CPU.
- I test hanno dimostrato che le operazioni di blocco rappresentano un collo di bottiglia per le prestazioni del sito e, utilizzando metodi asincroni per queste chiamate di blocco, IIS può gestire più richieste.
- Il parallelismo è più importante della semplicità del codice.
- Vuoi fornire un meccanismo che permetta agli utenti di cancellare richieste di lunga durata.
ASP.NET usano controller asincroni in MVC
|