Как использовать минимальную модель хостинга в ASP.NET Core 6

автор vadim


В ASP.NET Core 6 представлена ​​новая модель хостинга, которая гораздо более упрощена и оптимизирована, что позволяет сократить объем стандартного кода, который необходимо написать для запуска и работы приложения ASP.NET Core. В этой статье представлена ​​новая модель хостинга с соответствующими примерами кода, где это необходимо.

Для работы с примерами кода, представленными в этой статье, в вашей системе должна быть установлена ​​Visual Studio 2022. Если у вас еще нет копии, вы можете скачать Visual Studio 2022 здесь.

Создайте проект веб-API ASP.NET Core в Visual Studio 2022.

Прежде всего давайте создадим проект ASP.NET Core в Visual Studio 2022. Выполнение этих шагов создаст новый проект ASP.NET Core Web API 6:

  1. Запустите интегрированную среду разработки Visual Studio 2022.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» выберите «ASP.NET Core Web API» из списка отображаемых шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и местоположение нового проекта.
  6. При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
  7. Нажмите “Далее.
  8. В показанном ниже окне «Дополнительная информация» выберите .NET 6.0 в качестве целевой платформы из раскрывающегося списка вверху. В поле «Тип аутентификации» оставьте значение «Нет» (по умолчанию).
  9. Убедитесь, что флажки «Включить Docker», «Настроить HTTPS» и «Включить поддержку Open API» сняты, поскольку мы не будем здесь использовать ни одну из этих функций.
  10. Нажмите Создать.

Мы будем использовать этот проект веб-API ASP.NET Core 6 для работы с минимальной моделью хостинга в последующих разделах этой статьи.

Класс программы в ASP.NET Core 6

Когда вы создаете новый проект ASP.NET Core 6 в Visual Studio, класс Program будет выглядеть следующим образом:

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseAuthorization();
app.MapControllers();
app.Run();

Мы будем использовать этот класс в последующих разделах этой статьи.

Настройка промежуточного программного обеспечения в ASP.NET Core 6

Компоненты промежуточного программного обеспечения в конвейере запросов ASP.NET Core 6 используются для настройки способа обработки запросов и ответов. Вы можете использовать промежуточное программное обеспечение для проверки, маршрутизации или изменения сообщений запросов и ответов, проходящих через конвейер.

Мы можем видеть, как конфигурация промежуточного программного обеспечения была оптимизирована в ASP.NET Core 6 по сравнению с ASP.NET Core 5. Следующий фрагмент кода можно использовать для добавления обслуживания статических файлов (т. е. файлов HTML, CSS, изображений и JavaScript) в конвейер обработки запросов в ASP.NET Core 5:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles();
    }
  //Other members
}

Эта конфигурация была сокращена до двух строк в ASP.NET Core 6. Вы можете написать следующий код, чтобы добавить то же промежуточное программное обеспечение в конвейер обработки запросов в ASP.NET Core 6:

// Configure the HTTP request pipeline.
var app = builder.Build();
app.UseStaticFiles();

Настройка маршрутизации в ASP.NET Core 6

Теперь давайте сравним конфигурацию маршрутизации в ASP.NET Core 5 и ASP.NET Core 6. Вы можете использовать следующий фрагмент кода для создания конечной точки в приложении ASP.NET Core 5:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGet("https://www.infoworld.com/", () =>
            "This is an endpoint created in ASP.NET 5");
        });
    }
}

Вы можете добиться того же в ASP.NET Core 6, используя гораздо меньше кода:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("https://www.infoworld.com/", () => "This is an endpoint created in ASP.NET 6");
app.Run();

Добавьте поставщика журналов в ASP.NET Core 6.

Поставщики журналирования — это классы, реализующие интерфейс ILoggingProvider. Поставщики журналов хранят журналы в целевом объекте журналов, настроенном в приложении. Исключением является поставщик журналов консоли, который отображает журналы как стандартный вывод. ASP.NET Core включает в себя следующие встроенные поставщики журналов:

  • Консоль
  • Отлаживать
  • Источник событий
  • Журнал событий

Вы можете использовать следующий фрагмент кода, чтобы добавить ведение журнала консоли в приложение ASP.NET Core 5:

public static IHostBuilder CreateHostBuilder(string[] args) = >
Host.CreateDefaultBuilder(args).ConfigureLogging(loggingBuilder = > {
      loggingBuilder.ClearProviders();
      loggingBuilder.AddConsole();
}).ConfigureWebHostDefaults(webBuilder = >{
      webBuilder.UseStartup < Startup > ();
});

И здесь ASP.NET Core 6 менее многословен. Вы можете добавить ведение журнала консоли, используя три строки кода в ASP.NET Core 6:

var builder = WebApplication.CreateBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.AddConsole();

Добавление служб в ASP.NET Core 6

Синтаксис добавления служб изменился в ASP.NET Core 6, но он не стал более кратким. Вы можете добавить службы во встроенный контейнер внедрения зависимостей в ASP.NET Core 5, используя следующий код:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMemoryCache();
    services.AddScoped<IProductRepository, ProductRepository>();
}

Вы можете добиться того же в ASP.NET Core 6, используя этот код:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMemoryCache();
builder.Services.AddScoped<IProductRepository, ProductRepository>();
var app = builder.Build();

Добавьте поставщика конфигурации в ASP.NET Core 6.

Поставщики конфигурации используются для чтения и записи данных конфигурации из различных предварительно настроенных источников данных конфигурации. ASP.NET Core 5 обеспечивает отличную поддержку для работы с данными конфигурации, хранящимися в файлах JSON, переменных среды, файлах XML, файлах INI, аргументах командной строки и т. д. Вы можете использовать следующий код, чтобы добавить поставщика конфигурации в ASP.NET Core. 5:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(config =>
        {
            config.AddIniFile("appsettings.ini");
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

И то же самое можно добиться в ASP.NET Core 6 всего тремя строками:

var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddIniFile("appsettings.ini");
var app = builder.Build();

Новая парадигма хостинга в ASP.NET Core 6 упрощена: для запуска и работы простого приложения ASP.NET Core требуется меньше шаблонного кода. Для обеспечения обратной совместимости вы по-прежнему можете использовать класс Startup в ASP.NET Core 6.

Related Posts

Оставить комментарий