Учебник ASP.NET Core для начинающих
Полный премиум-курс по ASP.NET Core — современному кроссплатформенному фреймворку для бэкенда на C#. Вы пройдёте путь от установки .NET SDK и первого эндпоинта на Minimal API до production-ready Web API: контроллеры и маршрутизация, REST-дизайн, валидация и DTO, работа с базой через EF Core (миграции, LINQ, Include, AsNoTracking), внедрение зависимостей и времена жизни сервисов, конвейер middleware, JWT-аутентификация, авторизация по ролям и политикам, обработка ошибок и health checks.
Каждый урок содержит подробный разбор «под капотом», ASCII-диаграммы ключевых механизмов (конвейер запроса, DI-контейнер, времена жизни, путь к БД) и запускаемые врезки, моделирующие логику ASP.NET Core, чтобы понять идеи, а не заучить синтаксис. Актуально для .NET 8 (LTS) и .NET 9.
Курс «ASP.NET Core: бэкенд на C#» состоит из 6 разделов и 23 уроков: Введение и платформа .NET, Контроллеры и маршрутизация, Web API: проектирование и данные, EF Core: работа с базой данных, DI, сервисы и конвейер и Аутентификация и практика прода. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение и платформа .NET
- Что такое ASP.NET Core
ASP.NET Core: кроссплатформенный фреймворк для бэкенда на C#, его преимущества и место в индустрии.
- Установка SDK и первый проект
Установка .NET SDK, команда dotnet, разница между SDK и runtime, создание проекта через CLI.
- Структура проекта
Program.cs, .csproj, appsettings.json: разбор файлов проекта ASP.NET Core и слоёв конфигурации.
- Первый эндпоинт на Minimal API
Minimal API в ASP.NET Core: создание эндпоинтов без контроллеров, model binding, сериализация в JSON.
- Что такое ASP.NET Core
2 Контроллеры и маршрутизация
- Контроллеры: структура и подключение
Что такое контроллер в ASP.NET Core, атрибуты ApiController и Route, регистрация через AddControllers.
- Маршрутизация и шаблоны URL
Атрибутная маршрутизация, параметры маршрута, ограничения типов и сопоставление URL с action-методом.
- HTTP-коды и результаты действий
IActionResult, статус-коды 200/201/204/400/404, хелперы Ok/NotFound/Created и стандарт ProblemDetails.
- Контроллеры: структура и подключение
3 Web API: проектирование и данные
- REST и проектирование API
Принципы REST: ресурсы, HTTP-глаголы, предсказуемые URL, идемпотентность и версионирование API.
- Model binding и DTO
Как ASP.NET Core собирает объект из тела, маршрута и query, зачем нужны DTO и защита от overposting.
- Валидация данных
Data annotations, ModelState, автоматический возврат 400 с [ApiController] и где валидировать бизнес-правила.
- Документация API: OpenAPI/Swagger
Генерация OpenAPI-документа, Swagger UI, ProducesResponseType и автогенерация клиентов из спецификации.
- REST и проектирование API
4 EF Core: работа с базой данных
- EF Core: сущности и DbContext
Что такое ORM, сущности как таблицы, DbContext и DbSet, регистрация и change tracker.
- Миграции
Версионирование схемы БД: dotnet ef migrations add, database update, Up/Down и история миграций.
- CRUD и LINQ-запросы
Create/Read/Update/Delete через EF Core, LINQ-фильтрация, отложенное выполнение и async-методы.
- Связи, Include и производительность
Навигационные свойства, Include против N+1, AsNoTracking для read-only и осознанная загрузка связей.
- EF Core: сущности и DbContext
5 DI, сервисы и конвейер
- Внедрение зависимостей (DI)
Принцип DI, конструкторное внедрение, регистрация интерфейс-реализация и инверсия контроля.
- Времена жизни сервисов
Singleton, Scoped, Transient: чем отличаются, scope на запрос и ловушка captive dependency.
- Конфигурация и логирование
IConfiguration, типизированный IOptions, структурированное логирование через ILogger и слои настроек.
- Конвейер middleware
Устройство конвейера, порядок middleware, next и обратный путь ответа, short-circuit и кастомные middleware.
- Внедрение зависимостей (DI)
6 Аутентификация и практика прода
- Аутентификация vs авторизация
Разница между аутентификацией и авторизацией, claims, ClaimsPrincipal и коды 401 против 403.
- JWT-токены
Структура JWT (header/payload/signature), подпись секретом, stateless-проверка и настройка JwtBearer.
- Защита эндпоинтов: роли и политики
Атрибут [Authorize], роли, AllowAnonymous, политики авторизации и принцип по умолчанию закрыто.
- Обработка ошибок и health checks
Централизованная обработка исключений, сокрытие стектрейсов, ProblemDetails и health checks для прода.
- Аутентификация vs авторизация