Основы в ASP.NET Core

Создание и запуск приложения. WebApplication и WebApplicationBuilder

Последнее обновление: 11.05.2022

В прошлой теме было создано примитивное приложение, которое имело следующий код:

Imports Microsoft.AspNetCore.Builder

Module Program
    Sub Main(args As String())
        'Получаем класс-строитель приложения
        Dim builder = WebApplication.CreateBuilder(args)

        'Создаем объект приложения
        Dim app = builder.Build()

        'Определяем обработку запроса по пути "/"
        app.MapGet("/", Function() "Hello METANIT.COM!")

        'запуск приложения
        app.Run()
    End Sub
End Module

Рассмотрим его основные моменты. В центре приложения ASP.NET находится класс WebApplication. Переменная app в данном коде как раз представляет объект WebApplication. Однако для создания этого объекта необходим другой объект - WebApplicationBuilder, который в данном коде представлен переменной builder.

Класс WebApplicationBuilder

Создание приложения по умолчанию фактически начинается с класса WebApplicationBuilder. Для его создания объекта этого класса вызывается статический метод WebApplication.CreateBuilder():

Dim builder As WebApplicationBuilder = WebApplication.CreateBuilder()

Для инициализации объекта WebApplicationBuilder в этот метод могут передаваться аргументы командной строки, указанные при запуске приложения (доступны через неявно определенный параметр args):

Dim builder = WebApplication.CreateBuilder(args)

Кроме создания объекта WebApplication класс WebApplicationBuilder выполняет еще ряд задач, среди которых можно выделить следующие:

  • Установка конфигурации приложения

  • Добавление сервисов

  • Настройка логгирования в приложении

  • Установка окружения приложения

  • Конфигурация объектов IHostBuilder и IWebHostBuilder, которые применяются для создания хоста приложения

Для реализации этих задач в классе WebApplicationBuilder определены следующие свойства:

  • Configuration: представляет объект ConfigurationManager, который применяется для добавления конфигурации к приложению.

  • Environment: предоставляет информацию об окружении, в котором запущено приложение.

  • Host: объект IHostBuilder, который применяется для настройки хоста.

  • Logging: позволяет определить настройки логгирования в приложении.

  • Services: представляет коллекцию сервисов и позволяет добавлять сервисы в приложение.

  • WebHost: объект IWebHostBuilder, который позволяет настроить отдельные настройки сервера.

Класс WebApplication

Метод build() класса WebApplicationBuilder создает объект WebApplication:

Dim builder As WebApplicationBuilder = WebApplication.CreateBuilder()
Dim app As WebApplication = builder.Build()

Класс WebApplication применяется для управления обработкой запроса, установки маршрутов, получения сервисов и т.д. Он применяет три интерфейса:

  • IHost: применяется для запуска и остановки хоста, который прослушивает входящие запросы

  • IApplicationBuilder: применяется для установки компонентов, которые участвуют в обработке запроса

  • IEndpointRouteBuilder: применяется для установки маршрутов, которые сопоставляются с запросами

Для получения доступа к функциональности приложения можно использовать свойства класса WebApplication:

  • Configuration: представляет конфигурацию приложения в виде объекта IConfiguration

  • Environment: представляет окружение приложения в виде IWebHostEnvironment

  • Lifetime: позволяет получать уведомления о событиях жизненного цикла приложения

  • Logger: представляет логгер приложения по умолчанию

  • Services: представляет сервисы приложения

  • Urls: представляет набор адресов, которые использует сервер

Для управления хостом класс WebApplication определяет следующие методы:

  • Run(): запускает приложение

  • RunAsync(): асинхронно запускает приложение

  • Start(): запускает приложение

  • StartAsync(): запускает приложение

  • StopAsync(): останавливает приложение

Таким образом, после вызова метод Run/Start/RunAsync/StartAsync приложение будет заущено, и мы сможем к нему обращаться:

Dim builder = WebApplication.CreateBuilder()
Dim app = builder.Build()
app.Run()
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850