Vaatimukset: Projektissa määritellään staattinen lokijono, ja jokainen pyyntö voi laittaa viestejä jonoon, ja verkkosivuston täytyy avata taustatehtävä viestien käsittelyä varten tässä jonossa.
Arvostelu:
IHostedService-rajapinta
IHostedService-rajapinta määrittelee kaksi menetelmää isännöityille objekteille:
StartAsync(CancellationToken): Logiikka, jota käytetään taustatehtävien käynnistämiseen.
StopAsync(CancellationToken): Aktivoituu, kun isäntä suorittaa normaalin sammutuksen, sisältäen logiikan taustatehtävien lopettamiseksi.
Tausta Palvelun perusluokka
BackgroundService on perusluokka, jota käytetään pitkään toimineen IHostedServicen, lähdekoodin osoitteen, toteuttamiseen:Hyperlinkin kirjautuminen on näkyvissä.
Kutsu ExecuteAsync (CancellationToken) taustapalvelun suorittamiseksi. Toteutus palauttaa tehtävän, joka edustaa taustapalvelun koko elinkaaren. Muita palveluita ei käynnistetä ennen kuin ExecuteAsync muuttuu asynkroniseksi, esimerkiksi kutsumalla odotus. Vältä pitkien estoaloitustehtävien suorittamista ExecuteAsyncissä. StopAsync (CancellationToken) odottaa ExecuteAsyncin valmistumista.
Toteutamme taustatehtävän, jolla tulostetaan loki silmukassa, koodi on seuraava:
Rekisteröidy palvelupalveluun seuraavalla koodilla:
Rekisteröintimoodi on singleton, kuten alla olevassa kuvassa näkyy:
Aloita projekti tuloksella seuraavasti:
Käytä laajennettua palvelua taustatehtävässä
Scope-palvelun käyttämiseksi BackgroundServicessä luo scope. Oletuksena hallinnoiduille palveluille ei luoda laajuuksia. Jos käytät konstruktoria suoraan injektioidaksesi scope-objektin, virhe on seuraava:
Käsittelemätön poikkeus. System.AggregateException: Joitakin palveluita ei voida rakentaa (Virhe palvelukuvauksen validoinnissa 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Elinikä: Singleton Toteutustyyppi: WebApplication2.Worker.TestServiceHostedService': Ei voi käyttää scoped-palvelua 'WebApplication2.Worker.User' singletonilta Microsoft.Extensions.Hosting.IHostedService'.) Meidän täytyy muokata koodia seuraavasti:
Viittaus:Hyperlinkin kirjautuminen on näkyvissä.
(Loppu)
|