Содержание
Файл Program.cs – это главный файл нашего приложения с которого начинается абсолютно всё, что касается работы. В зависимости от того, какая версия платформы .NET выбрана при создании нового проекта, зависит содержимое этого файла.
Файл Program.cs в .NET 9
Создадим новое приложение ASP.NET Core Web API на основе контроллеров, используя .NET 9. В этом случае, файл Program.cs будет выглядеть следующим образом:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
В файле Program.cs выполняется две важнейшие задачи, а именно, производится:
- добавление сервисов, используемых приложением;
- настройка конвейера обработки запросов.
То есть, условно, весь файл Program.cs можно разделить на две части
Добавление сервисов в приложение осуществляется после строки кода:
var builder = WebApplication.CreateBuilder(args);
и до строки
var app = builder.Build();
Контейнер зависимостей содержится в объекте класса WebApplicationBuilder. Так, сейчас на рисунке выше в наше приложение добавляется сервис для использования контроллеров, а также сервис для работы с документацией по API. Также, по умолчанию, в конвейер обработки запросов могут добавляться другие сервисы, например сервис ведения журналов, доступа к конфигурации приложения и так далее.
Любой запрос клиента API, после его обработки web-сервером, попадает в конвейер обработки запроса, который состоит из отдельных компонентов, которые называются компонентами middleware или «ПО промежуточного слоя». Конвейер обработки запросов настраивается после строки кода
var app = builder.Build();
до строки:
app.Run();
За настройку конвейера обработки запросов отвечает объект класса WebApplication. Этот же класс содержит свойства, позволяющие получить доступ к настройкам приложения. Опять же, наше приложение настраивает конвейер запросов для использования OpenApi (если среда выполнения имеет имя Development), а также встраивает в конвейер запроса компоненты middleware для авторизации пользователя и автоматического перенаправления на https.
Таким образом, в нашем приложении важную роль играют два класса – это классы WebApplicationBuilder и WebApplication. При этом WebApplicationBuilder настраивает работу нашего приложения – позволяет добавлять в приложение сервисы, расширяющие функционал приложения, добавлять файлы конфигурации, настраивать поставщиков ведения журнала работы приложения и так далее. В свою очередь, класс WebApplication дает нам возможность получить доступ к тем или иным настройкам приложения, а также выполняет важную для всего приложения задачу – настраивает конвейер обработки запросов.
Итого
В файле Program.cs выполняются две важные задачи — добавляются необходимые для работы приложения сервисы и настраивается конвейер обработки запросов. При этом, важнейшими, с этой точки зрения, классами приложения являются WebApplicationBuilder и WebApplication.
