Зачем нужен IHost и когда его полезно использовать в desktop-приложениях?
Разбираюсь с реализацией паттерна DI в .NET и хотя интерфейс IHost вроде бы не имеет к нему прямого отношения, их почти всегда используют вместе.
Я пишу WPF-приложение и во многих примерах предлагает сперва создать хост для такого приложения. Но я не совсем понимаю смысл этой абстракции. Вроде бы IHost интерфейс появился как попытка унификации любого микросервиса и должен облегчать межсервисное взаимодействие и контейнеризацию. Поправьте, если я заблуждаюсь.
Но если я прав, то вроде как создание хоста для WPF-приложения не обязательно для того, чтобы реализовать DI. Обратное было бы странно, ведь DI, в простейшем виде, просто сервис-локатор, внедряемый через конструктор. Зачем ему хост?
Тем не менее, хост вроде как полезно создать, в том числе для windows-приложения, т.к. он поднимает ряд служб (например, логирование и хранение конфигурации). Однако что мешает поместить эти службы в DI-контейнер? Получается box within box, какой в этом смысл? Через хост проще обращаться к DI-контейнеру? Или наличие хоста в инстансе приложения дает какие-то другие преимущества?
Вроде бы IHost интерфейс появился как попытка унификации любого микросервиса и должен облегчать межсервисное взаимодействие и контейнеризацию. Поправьте, если я заблуждаюсь
Как попытка унификации - да.
Как попытка упростить межсервисное взаимодействие - нет.
Главная задача IHost - упростить конфигурацию приложения и управление жизненным циклом (тот же graceful shutdown например тебе даётся из коробки, если ты используешь IHost)
+ Сразу автоматически получаешь преднастроенный IConfiguration, логирование и DI