Ao iniciar os estudos na área de programação, a maior parte das pessoas escrevem códigos síncronos (sem saber do que se trata) mas em uma aplicação real tudo pode mudar. De maneira breve e direta um código síncrono é executado desde a primeira linha até a última linha de código (bloqueando a thread e caso ocorram falhas, irá interromper a aplicação), porém o código assíncrono não. Exemplo:
Síncrono
public string GetHello()
{
return "Hello";
}
Assíncrono
[HttpGet("Products")]
public async Task<IActionResult> GetProducts()
{
var products = await _productRepository.GetAllProductsAsync();
if (products == null)
{
return NotFound("No Products Found");
}
return Ok(products);
}
Para utilizar a programação assíncrona devem ser usadas as duas palavras-chave ASYNC e AWAIT.
- Async -> Indica que o endpoint / operação é assíncrona
- Await -> Aguarda o resultado da operação (sem bloquear a thread). Caso a operação seja realizada com sucesso, retornará o resultado esperado, senão irá lançar uma exceção.
Quando deve ser implementado o sincronismo e assincronismo?
Para isso é necessário entender o que é uma THREAD. Por definição, thread é a menor unidade de processamento que um sistema operacional gerencia, permitindo a divisão de um processo em tarefas menores para executá-las paralelamente.
Em relação ao assincronismo, no padrão mais usual, toda requisição a ser feita terá uma thread retirada do pool de threads (repositório de threads já criadas e reutilizáveis) e essa thread irá aguardar o resultado da operação e retornar para o pool de threads, todavia sem travar o resto da aplicação. Já o sincronismo bloqueia a thread e caso falhe, irá lançar uma exceção (interrompendo a aplicação).
Utiliza-se programação assíncrona em casos de operações demoradas:
- Consulta ao banco de dados
- Chamada para outra API
- Registro de um usuário
- Carregar imagens
Utiliza-se programação síncrona em casos de operações mais rápidas (não dependem tanto da entrada/saída):
- Validações internas
- Manipulação de objetos em memória
- Cálculos matemáticos simples
Top comments (1)
Muito bom o artigo!