@romaro

Зачем нужен IHost и когда его полезно использовать в desktop-приложениях?

Разбираюсь с реализацией паттерна DI в .NET и хотя интерфейс IHost вроде бы не имеет к нему прямого отношения, их почти всегда используют вместе.

Я пишу WPF-приложение и во многих примерах предлагает сперва создать хост для такого приложения. Но я не совсем понимаю смысл этой абстракции. Вроде бы IHost интерфейс появился как попытка унификации любого микросервиса и должен облегчать межсервисное взаимодействие и контейнеризацию. Поправьте, если я заблуждаюсь.

Но если я прав, то вроде как создание хоста для WPF-приложения не обязательно для того, чтобы реализовать DI. Обратное было бы странно, ведь DI, в простейшем виде, просто сервис-локатор, внедряемый через конструктор. Зачем ему хост?

Тем не менее, хост вроде как полезно создать, в том числе для windows-приложения, т.к. он поднимает ряд служб (например, логирование и хранение конфигурации). Однако что мешает поместить эти службы в DI-контейнер? Получается box within box, какой в этом смысл? Через хост проще обращаться к DI-контейнеру? Или наличие хоста в инстансе приложения дает какие-то другие преимущества?
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега .NET
Токсичный шарпист

Вроде бы IHost интерфейс появился как попытка унификации любого микросервиса и должен облегчать межсервисное взаимодействие и контейнеризацию. Поправьте, если я заблуждаюсь

Как попытка унификации - да.
Как попытка упростить межсервисное взаимодействие - нет.

Главная задача IHost - упростить конфигурацию приложения и управление жизненным циклом (тот же graceful shutdown например тебе даётся из коробки, если ты используешь IHost)
+ Сразу автоматически получаешь преднастроенный IConfiguration, логирование и DI
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы