Тема
Тема: Generic Host / проєктування застосунків
Тематична сторінка з проєктування застосунків на .NET, де Generic Host, BackgroundService, DI, конфігурацію, журналювання та проєктування запуску й зупинки можна простежити в одному місці.
Що слід упорядкувати в цій темі
Коли застосунок на .NET трохи розростається, Main, Program.cs, ініціалізація форм, фонова обробка, завантаження конфігурації та ініціалізація журналювання розпорошуються по різних місцях.
Ця сторінка — тематична точка входу, з якої можна в одному місці простежити, як проєктувати запуск і зупинку всього застосунку, відштовхуючись від Generic Host.
- де поєднувати DI, конфігурацію та журналювання
- хто відповідає за час життя
BackgroundServiceі фонової обробки - як обробляти коректне завершення роботи (graceful shutdown) і скидання буферів під час зупинки
- як упорядкувати обробку, що міститься поза інтерфейсом
Питання, які найчастіше виникають під час консультацій
Task.Runі таймери з’являються у різних місцях, а відповідальність за зупинку нечітка- незрозуміло, наскільки далеко варто йти з
Host.CreateApplicationBuilderіBackgroundService - потрібно впорядкувати спільну основу для консольних, worker- і десктопних застосунків
- підключення конфігурації, журналювання та DI додавалося постфактум, і це ускладнює супровід
Рекомендований підхід
Самі лише назви API мало допомагають розібратися в Generic Host; простіше все впорядкувати, розглядаючи запуск, час життя та розподіл відповідальності разом. Якщо взяти за вхід три пов’язані статті та переглянути їх разом зі сторінками про розробку застосунків для Windows і рев’ю проєктних рішень, стає зрозуміла загальна картина того, наскільки далеко варто йти з host.
Звернутися за консультацією
Якщо у вас є проблема, близька до змісту цієї сторінки, проконсультуйтеся з нами: розкажіть про поточний стан і про те, яка підтримка вам потрібна.