Исследуем .NET 6. Часть 2
В этой серии статей рассмотрим подробно некоторые из новых функций, которые появились в .NET 6.
Часть 1
WebApplicationBuilder
В .NET появился новый способ «по умолчанию» для создания приложений, используя
WebApplication.CreateBuilder(). Во всех предыдущих версиях ASP.NET Core конфигурация разделена на 2 файла: Program.cs и Startup.cs (см. рисунок ниже). В .NET 6 добавлено множество изменений в C#, BCL и ASP.NET Core, и теперь всё может быть в одном файле.var builder = WebApplication.CreateBuilder(args);WebApplicationBuilder
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles();
app.MapGet("/", () => "Hello World!");
app.MapRazorPages();
app.Run();
Для начала рассмотрим
WebApplicationBuilder.var builder = WebApplication.CreateBuilder(args);Он отвечает за 4 основные вещи:
builder.Services.AddRazorPages();
1. Добавление конфигурации с помощью
builder.Configuration. Он предоставляет тип ConfigurationManager для добавления новых источников конфигурации, а также для доступа к значениям конфигурации, как я описал в предыдущем посте.2. Добавление сервисов с помощью
builder.Services. Предоставляет доступ к IServiceCollection напрямую для добавления сервисов в контейнер DI.3. Аналогично для журнала с помощью
builder.Logging. Вы можете использовать, Например:builder.Logging.AddFile();4. Общая конфигурация
IHostBuilder и IWebHostBuilder. Для тех точек расширения, которые напрямую зависят от IHostBuilder или IWebHostBuilder, WebApplicationBuilder предоставляет свойства Host и WebHost соответственно. Например, настройка Serilog для ASP.NET Core подключается к IHostBuilder. С помощью WebApplicationBuilder вы можете вызвать UseSerilog() на свойстве Host:builder.Host.UseSerilog();Фактически,
WebApplicationBuilder – это то место, где вы выполняете всю настройку, кроме конвейера промежуточного ПО.WebApplication
После того, как вы настроили всё необходимое в
WebApplicationBuilder, вы вызываете Build() для создания экземпляра WebApplication:var app = builder.Build();
WebApplication реализует несколько различных интерфейсов:-
IHost – для запуска и остановки хоста.-
IApplicationBuilder – для создания конвейера промежуточного ПО.-
IEndpointRouteBuilder – для добавления конечных точек.Два последних пункта во многом связаны. В ASP.NET Core 3.x и 5
IEndpointRouteBuilder используется для добавления конечных точек путем вызова UseEndpoints() и передачи ему лямбды, например:public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
WebApplication значительно упрощает этот шаблон:app.UseStaticFiles();Это явно намного проще, хотя немного обманчиво, поскольку различие между промежуточным ПО и конечными точками гораздо менее очевидно, чем в .NET 5.x. Вероятно, это просто дело вкуса, но такой подход несколько размывает концепцию важности порядка настройки (которая относится к промежуточному ПО, но не к конечным точкам).
app.MapRazorPages();
Подробнее перевод статьи с примерами кода размещён на Хабре.
Источник: https://andrewlock.net/exploring-dotnet-6-part-2-comparing-webapplicationbuilder-to-the-generic-host/