ASP.NET Core#
ASP.NET — это быстрая, легкая и модульная платформа для создания кроссплатформенных веб-приложений, работающих в Linux, macOS и Windows. Среда выполнения ASP.NET Core Runtime содержит все необходимое для запуска веб-приложений .NET. Пакет включает в себя высокопроизводительную виртуальную машину, а также библиотеки платформы, используемые приложениями .NET.
Частью ASP.NET Core является кроссплатформенный веб-сервер KestrelHttpServer. Платформа позволяет создавать не только веб-приложения, но и микросервисы.
Пакет |
Версия |
Репозиторий |
Описание |
---|---|---|---|
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:
ASP.NET Core - наиболее удобный и предпочтительный вариант для разработки в Astra Linux.
Blazor — фреймворк для создания интерактивных веб-приложений с использованием C# (основан на ASP.NET Core). Позволяет писать клиентский код на C# и использовать .NET вместо JavaScript. Blazor поддерживает как серверный (Blazor Server), так и клиентский (Blazor WebAssembly) режим выполнения.
Примечание
Подробнее о разработке с Blazor.
Шаблоны веб-приложений#
ASP.NET Core предлагает разнообразные шаблоны для создания веб-приложений. В стандартном пакете ASP.NET Core без расширений Blazor доступны следующие основные шаблоны:
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 # Конфигурации
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.
Web API: Используется для создания RESTful API. Подходит для создания микросервисов, поскольку позволяет создавать RESTful API для обработки запросов от различных клиентов (веб, мобильных приложений и т.д.).
Команда создания шаблона с названием MyMicroservice:
dotnet new webapi -n MyMicroservice
Структура проекта MyMicroservice:
MyMicroservice/
├── Controllers/ # Контроллеры для обработки запросов
├── Models/ # Модели данных
├── Program.cs # Точка входа
└── appsettings.json # Конфигурации
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!».