Тема

Тема: 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.

Звернутися за консультацією

Якщо у вас є проблема, близька до змісту цієї сторінки, проконсультуйтеся з нами: розкажіть про поточний стан і про те, яка підтримка вам потрібна.

Повернутися на головну