Pool de fios
Sempre quis reescrever o projeto para assíncrono, mas o ASP.NETMVC3 é muito trabalhoso para escrever, .NET 4.5 e ASP.NET código MVC são relativamente simples, a MS sempre gostou disso, cada coisa madura, precisa evoluir várias versões para tender a padronizar. ASP.NET por que você precisa usar assíncrono no MVC? O IIS possui um pool de threads para processar solicitações dos usuários; quando uma nova solicitação chega, as threads do pool serão agendadas para processar a solicitação, mas quando a concorrência é alta, as threads do pool não conseguem mais atender a tantas requisições, e todas as threads do pool estão ocupadas ao processar a solicitação, a thread que processa a solicitação será bloqueada, e a thread não poderá fornecer serviços para outra solicitação; se a fila de requisições estiver cheia, a web O servidor rejeita a solicitação e fica em estado de ocupado HTTP 503. Se você está lidando com uma latência alta, como operações de rede, a maioria dessas threads apenas espera o estado e não faz nada na maior parte do tempo; essas threads podem usar programação assíncrona para fazer melhor uso disso.
Processamento assíncrono
Por exemplo, se uma requisição gera uma chamada de rede que leva dois segundos para ser concluída, a solicitação é feitaLeva dois segundos para ser executado tanto de forma síncrona quanto assíncrona。 MasDurante uma chamada assíncrona, o servidor não bloqueia a resposta a outras solicitações enquanto aguarda a conclusão da primeira solicitação。 Portanto, quando há muitas requisições chamando operações de longa duração, requisições assíncronas podem impedir que as requisições entrem em fila. No .NET 4.5, o pool máximo de threads é de 5000, e as palavras-chave await e async também foram adicionadas no .NET 4.5 para simplificar a programação assíncrona.
Síncrono ou assíncrono (trecho da MSDN)
- Normalmente, pipelines de sincronização são usados quando as seguintes condições são atendidas:
- Operação simples ou tempo de funcionamento curto.
- A simplicidade é mais importante do que a eficiência.
- Essa operação é principalmente de CPU, e não operações que envolvem muita sobrecarga de disco ou rede. Usar um método de operação assíncrono para operações limitadas à CPU não traz nenhum benefício e também resulta em mais sobrecarga.
Em geral, pipelines assíncronos são usados quando as seguintes condições são atendidas:
- As operações são ligadas à rede ou E/S, em vez de limitadas à CPU.
- Testes mostraram que operações de bloqueio são um gargalo para o desempenho do local e, ao usar métodos assíncronos para essas chamadas de bloqueio, o IIS pode atender a mais solicitações.
- Paralelismo é mais importante do que a simplicidade do código.
- Você quer fornecer um mecanismo que permita aos usuários cancelar solicitações de longa duração.
ASP.NET usam controladores assíncronos no MVC
|