Ho appena, per una bozza di massima, convertito un intero lotto di metodi di accesso ai dati in async usando il seguente schema, e sembra troppo semplice per essere sufficiente per le iterazioni successive. Quanto è sicuro, cosa manca e come dovrei farlo?Le chiamate a esecuzione prolungata sono così semplici?
Il servizio che fornisce le chiamate di lunga durata:
private class UserService
{
public IdentityUser GetById(int id)
{
...
}
}
private UserService _userService = new UserService();
Il metodo sincrono originale:
public IdentityUser GetById(int id)
{
return _userService.GetById(id);
}
mio fantastico nuovo metodo asincrono:
public async Task<IdentityUser> GetByIdAsync(int id)
{
await Task.Run(() => _userService.GetById(id));
}
Le query di lunga durata contengono un lungo elenco di possibili problemi che è necessario affrontare. Perché non installare solo il SignalR nuget e far sì che tutti siano riparati per te - e anche il supporto websocket! –
@ MattiasÅslund: persone diverse hanno definizioni diverse di "long-running". Ho la sensazione che GetById() non sia il tipo di "long-running" che meriterebbe l'uso di SignalR. – StriplingWarrior
È qualcosa che si consuma come servizio WCF o Web API? Se è così, peggiori le cose solo dal lato server. – Noseratio