619 messaggi dal 13 novembre 2008
Contributi
ciao, ho bisogno di eseguire una operazione di verifica veloce all'avvio di una webapp su Azure; inizialmente avevo inserito la task nel middleware, richiamata con

app.Use....

così però la task parte ad ogni richiesta, cosa che non voglio;

ho quindi pensato a una classe singleton

services.AddSingleton<IServiceRegister, Service>();
...
public void Configure(IServiceRegister service)
{
service.DoWork(); //esegue la task solo all'avvio
...

ci sono contro indicazioni nel fare questo?
Grazie.
10.746 messaggi dal 09 febbraio 2002
Contributi
Ciao,
puoi farlo, non è un problema. Le uniche considerazioni che si possono fare sono:
  • Se l'operazione è di lunga durata, rallenterà il tempo di avvio della tua applicazione quindi sarebbe consigliabile svolgere quell'operazione in background con un Hosted Service. Ovviamente se nel frattempo arrivano richieste HTTP, la tua applicazione dovrà tenere in considerazione il fatto che l'operazione di avvio magari è ancora in esecuzione;
  • Non puoi eseguire operazioni asincrone quindi risulterà "strano" lavorare con API asincrone in maniera sincrona. Oltretutto, mi ricordo di aver provato ad usare un DbContext e ho avuto un'eccezione, probabilmente perché il servizio non era ancora ben configurato (?). Il problema del Configure async è citato in una issue che è ancora aperta dal 2015. Nel frattempo alcuni sviluppatori si sono ingegnati con qualche barbatrucco che trovi scritto nella issue;
  • In alternativa al metodo Configure, potresti usare il servizio IApplicationLifetime che ti lascia registrare una callback da eseguire ad applicazione avviata. Attenzione perché, come al punto 1., mentre tu esegui il codice di avvio, l'applicazione già riceve richieste HTTP.


ciao,
Moreno
Modificato da BrightSoul il 05 luglio 2018 20.32 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.