Aihe

Generic Host / sovellussuunnittelun teema

Aihe .NET-sovellusten arkkitehtuurista: Generic Host, BackgroundService, DI, asetukset, lokitus sekä käynnistyksen ja pysäytyksen suunnittelu koottuna yhteen paikkaan.

Mitä tässä aiheessa halutaan jäsentää

Kun .NET-sovellus kasvaa hieman, Main, Program.cs, lomakkeiden alustus, taustalla jatkuvasti toimiva käsittely, asetusten lataus ja lokituksen alustus alkavat hajautua eri paikkoihin. Tämä aihe on kokoava paikka, jonka avulla koko sovelluksen käynnistyksen ja pysäytyksen suunnittelua voi käydä läpi Generic Hostin ympärille koottuna.

  • missä DI (riippuvuuksien injektointi), asetukset ja lokitus yhdistetään
  • kenellä on BackgroundService-palvelun ja taustakäsittelyn elinkaari hallussaan
  • miten hallittu pysäytys (graceful shutdown) ja puskurien tyhjennys pysäytyksessä hoidetaan
  • miten käyttöliittymän ulkopuolinen käsittely jäsennetään

Kysymykset, joita neuvonnassa nousee usein esiin

  • Task.Run-kutsuja ja ajastimia on levinnyt sinne tänne, eikä pysäytysvastuu ole selvä
  • on epäselvää, kuinka pitkälle Host.CreateApplicationBuilder ja BackgroundService kannattaa ottaa käyttöön
  • halutaan jäsentää, miten konsolisovelluksen, worker-palvelun ja työpöytäsovelluksen pohja saadaan yhtenäiseksi
  • asetusten, lokituksen ja DI:n yhteydet on lisätty jälkikäteen palanen kerrallaan, ja se on hankalaa

Sopiva etenemistapa

Generic Hostista ei ole paljon hyötyä, jos opettelee vain API-nimet. Asia jäsentyy helpommin, kun käynnistystä, elinkaarta ja vastuiden jakoa tarkastellaan yhdessä. Kun lähtökohtana käytetään kolmea aiheeseen liittyvää artikkelia ja niitä tarkastellaan yhdessä Windows-sovelluskehityksen ja suunnittelukatselmoinnin sivujen kanssa, kuva siitä, kuinka pitkälle hostia kannattaa käyttää, selkiytyy.

Neuvottele kanssamme

Jos tämä sivu vastaa ongelmaa, jonka parissa työskentelette, pyytäkää meiltä neuvoa kertomalla nykyinen tilanne ja millaista tukea tarvitsette.

Takaisin etusivulle