Как стать автором
Обновить

Комментарии 4

глобалньый вопрос , зачем их в предыдущей версии соединили , еще шилили что теперь можно создавать и консольное и ве бприложение из одного hostbuilder или как там он назывался , а теперь опять разъединили на сервайс и веб

Реализации IHostBuilder и IWebHostBuilder, если вы о них, по прежнему разъединены. Просто доступны через единый интерфейс - свойства WebApplicationBuilder: Host и WebHost соответственно.

Трудно ответить про одно ли мы говорим, но попробую еще уточнить.

То что было:
WebHost
HostBuilder

Потом объединили в:
Host.Create***
"вы можете использовать обновленный Generic Host Builder вместо Web Host Builder. Это дает возможность создавать любые приложения, начиная от консольных приложений и WPF и заканчивая веб-приложениями на одной базовой хостинговой парадигме с одинаковыми общими абстракциями."

А теперь опять два отдельных класа для web'а и всего остального?!

Есть 2 билдера WebHostBuilder (только для веба) и HostBuilder (универсальный).

В классе Program.cs в ASP.NET Core 2.x создавался только WebHostBuilder:

WebHost.CreateDefaultBuilder(args)
  .UseStartup<Startup>()
  .Build();

В ASP.NET Core 3.x/5 добавили универсальный хост как раз для других типов приложений (не веб). Сначала в CreateDefaultBuilder создаётся IHostBuilder (универсальный), а потом метод расширения ConfigureWebHostDefaults() оборачивает IHostBuilder во внутренний класс GenericWebHostBuilder и устанавливает значения по умолчанию для веба, которые WebHost.CreateDefaultBuilder() выполнял в ASP.NET Core 2.1. GenericWebHostBuilder действует как адаптер между старым IWebHostBuilder и новым IHostBuilder:

Host.CreateDefaultBuilder(args)
  .ConfigureWebHostDefaults(webBuilder =>
  {
    webBuilder.UseStartup<Startup>();
  }; 

В .NET 6 сделали только API поверх вот этого всего. Новые классы WebApplication и WebApplicationBuilder просто оборачивают кучу кода из файлов Program.cs и Startup.cs в более минималистичную форму. WebHost и HostBuilder остались "под капотом". Они доступны через свойства WebApplicationBuilder.WebHost и WebApplicationBuilder.Host.

Так что в плане универсального хоста и веб хоста ничего не изменилось. На них просто накинули ещё одну обёртку, чтобы упростить код создания и запуска приложения. Но ничего не мешает использовать старый шаблон (да и для крупных приложений, скорее всего, старый шаблон так и будет использоваться).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории