В 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:
- Запустите интегрированную среду разработки Visual Studio 2022.
- Нажмите «Создать новый проект».
- В окне «Создать новый проект» выберите «ASP.NET Core Web API» из списка отображаемых шаблонов.
- Нажмите “Далее.
- В окне «Настроить новый проект» укажите имя и местоположение нового проекта.
- При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
- Нажмите “Далее.
- В показанном ниже окне «Дополнительная информация» выберите .NET 6.0 в качестве целевой платформы из раскрывающегося списка вверху. В поле «Тип аутентификации» оставьте значение «Нет» (по умолчанию).
- Убедитесь, что флажки «Включить Docker», «Настроить HTTPS» и «Включить поддержку Open API» сняты, поскольку мы не будем здесь использовать ни одну из этих функций.
- Нажмите Создать.
Мы будем использовать этот проект веб-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.