В этом руководстве мы рассмотрим новый метод CreateEmptyBuilder, который входит в состав .NET8 и позволяет нам создавать наименьшие возможные приложения, используя только те элементы, которые нам нужны. включить.

Как вы, вероятно, поняли из названия, CreateEmptyBuilder создает пустой WebApplicationBuilder, который мы затем можем использовать для добавления наших явных служб и промежуточного программного обеспечения. Давайте посмотрим, как мы можем его использовать, шаг за шагом.

Шаг 1: Мы вызываем CreateEmptyBuilder(), чтобы создать пустой построитель.

var builder = WebApplication.CreateEmptyBuilder(new());

Шаг 2: Мы определяем Kestrel как WebHost.

builder.WebHost.UseKestrelCore();

Шаг 3. Мы вызываем Build() в сборщике для создания нашего приложения.

var app = builder.Build();

Шаг 4.Мы создаем и назначаем встроенное промежуточное программное обеспечение в нашем конвейере, которое будет выводить Hello, World! на каждый запрос.

app.Use(async (context, next) =>
{
    await context.Response.WriteAsync("Hello, World!");
    await next(context);
});

Шаг 5. Мы печатаем сообщение «Выполняется…» на консоль и запускаем в приложении. Теперь наше приложение готово принимать соединения.

Console.WriteLine("Running...");
app.Run();

Шаг 6: Мы открываем браузер и посещаем localhost по порту 5000, который является портом по умолчанию для Kestrel. Мы видим, что наше приложение запущено и в браузере отображается сообщение Hello, World!».

Шаг 7. Мы добавляем <PublishAot>true</PublishAot> в файл .csproj проекта, чтобы включить AOT (заранее компиляцию).

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <PublishAot>true</PublishAot>
  </PropertyGroup>

</Project>

Шаг 8. Мы открываем диалоговое окно Опубликовать и настраиваем Целевую среду выполнения в соответствии с нашей архитектурой. В этом примере это win-x64, так как я использую 64-битную машину Intel в Windows.