Téma

Téma: Generic Host / návrh aplikací

Téma architektury aplikací v .NET, které na jednom místě spojuje Generic Host, BackgroundService, DI, konfiguraci, logování a návrh spuštění a ukončení.

Co chceme v tomto tématu ujasnit

Jakmile aplikace v .NET trochu naroste, Main, Program.cs, inicializace formulářů, trvale běžící úlohy, načítání konfigurace a inicializace logování se začnou rozptylovat do různých míst. Toto téma je místem, kde lze na základě Generic Host sledovat pohromadě, jak navrhnout spuštění a ukončení celé aplikace.

  • Kde propojit DI, konfiguraci a logování
  • Kdo je vlastníkem životnosti BackgroundService a dalších trvale běžících úloh
  • Jak řešit řádné ukončení (graceful shutdown) a vyprázdnění vyrovnávacích pamětí (flush) při zastavení
  • Jak uspořádat zpracování, které leží mimo uživatelské rozhraní

Otázky, které se při konzultacích často objevují

  • Task.Run a časovače jsou rozesety po celém kódu a není jasné, kdo odpovídá za jejich ukončení
  • Není jasné, jak daleko zavést Host.CreateApplicationBuilder a BackgroundService
  • Chceme sjednotit základ konzolové aplikace, worker služby a desktopové aplikace
  • Dodatečné napojování konfigurace, logování a DI je obtížně udržitelné

Vhodný postup

U Generic Host příliš nepomáhá zapamatovat si pouze názvy API. Lépe se téma ujasní, když společně posoudíte spuštění, životnost a rozdělení odpovědností. Když se tři související články projdou společně se stránkami o vývoji aplikací pro Windows a o revizi návrhu, ujasní se, jak daleko má smysl zavést Generic Host.

Poraďte se s námi

Pokud tato stránka odpovídá situaci, kterou řešíte, poraďte se s námi a připojte současný kontext i to, jakou podporu potřebujete.

Zpět na úvodní stránku