30 messaggi dal 16 gennaio 2009
Buongiorno,rieccomi con un'altra domanda da principiante.
ho implementato nell'applicazione ASP.NET core un hosted service, cioè un task in background dove gira la logica applicativa e fino a qui tutto bene.
Però non ho chiaro qual'è il meccanismo per lo scambio dati tra i due mondi.
Ad esempio: premendo un bottone su una pagina scateno la relativa action, quindi presumo che dovrei scrivere qualcosa nella suddetta action che mi permetta di scatenare, ad esempio, un evento nel task in background. Però non ho capito come.
11.448 messaggi dal 09 febbraio 2002
Contributi
Ciao,
ho un'applicazione di esempio su GitHub che risponde alla tua domanda:
https://github.com/BrightSoul/background-email-sender
L'applicazione in questione serve ad inviare email da un hosted service, ma anche la situazione che hai descritto tu è realizzabile nello stesso modo. Se non l'hai già letto, questo script è propedeutico.


Ad esempio: premendo un bottone su una pagina scateno la relativa action, quindi presumo che dovrei scrivere qualcosa nella suddetta action che mi permetta di scatenare, ad esempio, un evento nel task in background

Ecco l'action in questione che invoca il metodo Post del servizio IEmailSender.
https://github.com/BrightSoul/background-email-sender/blob/master/Controllers/HomeController.cs#L27

L'invocazione a quel metodo Post serve ad accodare del lavoro per l'hosted service, come vedi qui, nella classe che implementa l'interfaccia IEmailSender.
https://github.com/BrightSoul/background-email-sender/blob/master/HostedServices/EmailSenderHostedService.cs#L84

L'accodamento avviene tramite la classe BufferBlock<T> che è thread-safe e serve a realizzare scenari producer-consumer come questo (il producer è l'action che accoda lavoro, mentre il consumer è l'hosted service che scoda lavoro e lo esegue). Nel tuo caso magari vorrai anche persistere il lavoro nel database, in modo che non vada perso se l'applicazione dovesse arrestarsi.

Se ci fai caso, la classe che implementa IEmailSender è proprio l'hosted service stesso, che è stato configurato sia come hosted service che come servizio singleton. Nota la particolare configurazione che permette di riusare la stessa istanza in entrambi i casi.
https://github.com/BrightSoul/background-email-sender/blob/master/Startup.cs#L28

Lunga vita e prosperità,
Moreno
Modificato da BrightSoul il 21 marzo 2019 19:34 -

Enjoy learning and just keep making
30 messaggi dal 16 gennaio 2009
Grazie a te Moreno comincio a capirci qualcosa.
Adesso l'ostacolo è capire bene come sistemare i models e, di conseguenza, le view.
Ho dei metodi della mia business logic, fatti in precedenza, che mi ritornano dei datatable e portarli su dei datagrid ASP non mi sembra una operazione proprio banale. Ma come sempre sono difficili solo le cose che non si conoscono...

Ciao e grazie per il supporto

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.