Witam,
Czy warto zawsze deklarować akcje jako asynchroniczne (async)? Chodzi mi o sytuacje gdy akcja wykonuje coś więcej niż tylko zwraca widok- np. wywołuje asynchroniczny serwis który z kolei wysyła zapytanie do bazy danych. W różnych artykułach można znaleźć informacje że czasem koszt asynchroniczności może być większy od samej operacji wykonywanej synchronicznie jednak ciężko znaleźć jakieś konkrety. Dla przykładu rozważmy poniższe dwie opcje:
// Opcja 1
public IActionResult Index()
{
var model = _mediator.Send(new GetPersonsViewModels()).Result;
return View(model);
}
// Opcja 2
public Task<IActionResult> Index()
{
var model = await _mediator.Send(new GetPersonsViewModels());
return View(model);
}
_mediator.Send jest metodą asynchroniczną i wywołuje handler'a na rzecz przekazanego request'a, w tym przypadku GetPersonsViewModels. Handler z kolei wysyła zapytanie do bazy danych i mapuje zwrócone encje na view models. Zapytanie jest proste, nie filtruje po żadnych skomplikowanych warunkach. Stąd też moje pytanie- czy w takim przypadku jest sens aby Index był metodą asynchroniczną (Opcja 2) czy po prostu wywołać Send i poczekać na wynik (Opcja 2)? Skąd wiedzieć czy użycie async w jakimś przypadku jest wskazane czy jest przerostem formy nad treścią?