ASP.NET Core#

ASP.NET — это быстрая, легкая и модульная платформа для создания кроссплатформенных веб-приложений, работающих в Linux, macOS и Windows. Среда выполнения ASP.NET Core Runtime содержит все необходимое для запуска веб-приложений .NET. Пакет включает в себя высокопроизводительную виртуальную машину, а также библиотеки платформы, используемые приложениями .NET.

Частью ASP.NET Core является кроссплатформенный веб-сервер KestrelHttpServer. Платформа позволяет создавать не только веб-приложения, но и микросервисы.

Основные пакеты для веб-разработки на .Net 8.0 из репозиториев Astra Linux Special Edition#

Пакет

Версия

Репозиторий

Описание

dotnet-sdk-8.0

8.0.100-1astra~1.8.0+b2

extended

Комплект разработки ПО на .NET 8.0

aspnetcore-runtime-8.0

8.0.0-1astra~1.8.0+b2

extended

Среда выполнения ASP.NET Core (веб-приложения)

Существуют несколько способов разработки веб-приложений, которые можно реализовать с помощью ASP.NET на Astra Linux Special Edition:

  1. ASP.NET Core - наиболее удобный и предпочтительный вариант для разработки в Astra Linux.

  2. Blazor — фреймворк для создания интерактивных веб-приложений с использованием C# (основан на ASP.NET Core). Позволяет писать клиентский код на C# и использовать .NET вместо JavaScript. Blazor поддерживает как серверный (Blazor Server), так и клиентский (Blazor WebAssembly) режим выполнения.

Примечание

Подробнее о разработке с Blazor.

Шаблоны веб-приложений#

ASP.NET Core предлагает разнообразные шаблоны для создания веб-приложений. В стандартном пакете ASP.NET Core без расширений Blazor доступны следующие основные шаблоны:

  1. Web Application (Model-View-Controller): Используется для создания веб-приложений с архитектурой MVC Включает контроллеры, представления и модели, позволяя создавать динамичные веб-страницы с серверной логикой.

    Команда создания шаблона с названием MyMvcApp:

dotnet new mvc -n MyMvcApp

Структура проекта MyMvcApp:

MyMvcApp/
├── Controllers/          # Контроллеры (для обработки запросов)
├── Models/               # Модели данных
├── Views/                # Представления (HTML-шаблоны)
├── wwwroot/              # Статические файлы (CSS, JS, изображения)
├── Program.cs            # Точка входа
└── appsettings.json      # Конфигурации
  1. Web Application (App/Razor): Шаблон создает веб-приложение с использованием Razor Pages, подхода, который упрощает создание страниц и интеграцию бизнес-логики. Razor Pages уменьшает количество кода, необходимого для построения пользовательского интерфейса.

    Команда создания шаблона с названием MyWebApp:

dotnet new webapp -n MyWebApp

Примечание

Аналогичной является команда dotnet new razor -n MyWebApp

Структура проекта MyWebApp:

MyWebApp/
├── Models/               # Модели данных
├── Pages/                # Razor-страницы (каждая страница — это пара .razor и .razor.cs)
├── Shared/               # Общие компоненты (например, макеты)
├── wwwroot/              # Статические файлы (CSS, JS, изображения)
├── Program.cs            # Точка входа
└── appsettings.json      # Конфигурации

Примечание

Подробнее о работе с Razor Pages.

  1. Web API: Используется для создания RESTful API. Подходит для создания микросервисов, поскольку позволяет создавать RESTful API для обработки запросов от различных клиентов (веб, мобильных приложений и т.д.).

    Команда создания шаблона с названием MyMicroservice:

dotnet new webapi -n MyMicroservice

Структура проекта MyMicroservice:

MyMicroservice/
├── Controllers/          # Контроллеры для обработки запросов
├── Models/               # Модели данных
├── Program.cs            # Точка входа
└── appsettings.json      # Конфигурации
  1. Worker Service: Используется для создания фоновых сервисов, которая идеально подходит для выполнения длительных задач, обработки сообщений и периодических операций, например для обработки сообщений из очередей или выполнения периодических задач.

    Команда создания шаблона с названием MyWorkerService:

dotnet new worker -n MyWorkerService

Структура проекта MyWorkerService:

MyWorkerService/
├── Program.cs            # Точка входа и настройка хоста
├── Worker.cs             # Класс Worker, где реализуется фоновая задача
├── appsettings.json      # Конфигурации
└── MyWorkerService.csproj # Файл проекта

Примечание

Шаблоны приложений с Blazor описаны в статье Разработка в фреймворке Blazor.

Создание простого веб-приложения#

Пример создания микросервиса обработки запросов.

Пункт 1#

  • создать проект и перейти в папку проекта:

dotnet new webapi -n MyService
cd MyService

Пункт 2#

  • запуск приложения:

dotnet run

Микросервис будет доступен по адресу http://localhost:5000. Порт может отличаться — он указан в файле launchSettings.json. При переходе по адресу выводится сообщение «Use /weather or /weather/tomorrow route to get temperature!», при обращении по адресу http://localhost:5000/weather выводится сообщение «22 degree», а по адресу http://localhost:5000/weather/tomorrow — сообщение «25 degree».

При создании из шаблона webapi файл Program.cs содержит следующий код:

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("weather")]
public class WeatherForecastController : ControllerBase
{
   [HttpGet]
   public string Today()
   {
       return "22 degree";
   }

   [HttpGet("tomorrow")]
   public string Tomorrow()
   {
       return "25 degree (hot)";
   }
}

public class Program
{
   public static void Main(string[] args)
   {
       var builder = WebApplication.CreateBuilder(args);
       builder.Services.AddControllers();
       var controller = new WeatherForecastController();
       var app = builder.Build();

       app.MapGet("/", () => "Use /weather or /weather/tomorrow route to get temperature!");
       app.MapControllers();
       app.Run();
   }
}

Объяснение кода#

  • импорт пространства имен для создания контроллеров и работы с HTTP-запросами:

using Microsoft.AspNetCore.Mvc;
  • точка входа в приложение Main находится в главном классе приложения Program;

  • класс контроллера (наследуется от базового класса ControllerBase, который предоставляет базовые функции для обработки HTTP-запросов):

[ApiController]
[Route("weather")]
public class WeatherForecastController : ControllerBase

Примечание

  • [ApiController]: Атрибут, который указывает, что этот класс является контроллером API. Добавляет дополнительные функции, такие как автоматическая проверка модели и привязка данных.

  • [Route(«weather»)]: Задаёт базовый маршрут для всех методов контроллера. Например, все методы будут доступны по пути /weather.

  • метод обработки HTTP GET-запроса по маршруту /weather/tomorrow:

[HttpGet("tomorrow")]
public string Tomorrow()
  • регистрация контроллеров в приложении:

builder.Services.AddControllers();
var controller = new WeatherForecastController();

Предупреждение

ASP.NET Core может автоматически находить и управлять созданием контроллеров через DI, например, контроллером WeatherForecastController.

  • настройка маршрута для корневого пути:

app.MapGet("/", () => "Use /weather or /weather/tomorrow route to get temperature!");

При обращении к корневому пути (/) сервер вернёт строку «Use /weather or /weather/tomorrow route to get temperature!».