Easy📖Теория1 min

Шаг 3: NuGet-пакеты

Установка необходимых NuGet-пакетов для каждого слоя: MediatR, FluentValidation, EF Core, Scalar и FluentAssertions

Шаг 3: NuGet-пакеты

NuGet -- менеджер пакетов для .NET (аналог npm для JavaScript). Установим библиотеки для каждого слоя.

Domain -- минимум зависимостей

В Domain устанавливаем только интерфейсы MediatR:

dotnet add src/OrderManagement.Domain package MediatR.Contracts

MediatR.Contracts -- пакет только с интерфейсами (INotification), без логики. Domain «знает» формат событий, но не зависит от реализации MediatR.

Application -- координация

dotnet add src/OrderManagement.Application package MediatR
dotnet add src/OrderManagement.Application package FluentValidation
dotnet add src/OrderManagement.Application package FluentValidation.DependencyInjectionExtensions

MediatR реализует паттерн Mediator -- контроллер отправляет Command, MediatR находит Handler и передаёт ему команду. FluentValidation описывает правила валидации в удобном виде: RuleFor(x => x.Name).NotEmpty().

Infrastructure -- база данных

dotnet add src/OrderManagement.Infrastructure package Microsoft.EntityFrameworkCore.SqlServer
dotnet add src/OrderManagement.Infrastructure package Microsoft.EntityFrameworkCore.Tools

Entity Framework Core -- ORM, переводящий работу с C# объектами в SQL-запросы. SqlServer -- провайдер для Microsoft SQL Server и Azure SQL.

API -- веб-сервер

dotnet add src/OrderManagement.API package Scalar.AspNetCore
dotnet add src/OrderManagement.API package Serilog.AspNetCore

Scalar -- современный UI для документации API (замена Swagger UI). В .NET 10 OpenAPI генерируется встроенным пакетом, Scalar визуализирует спецификацию. Serilog -- структурированное логирование с поддержкой Application Insights.

Тестовые проекты

dotnet add tests/OrderManagement.Domain.Tests package FluentAssertions
dotnet add tests/OrderManagement.Application.Tests package FluentAssertions
dotnet add tests/OrderManagement.Application.Tests package Moq

FluentAssertions: result.Should().Be(5) вместо Assert.Equal(5, result). Moq создаёт фейковые объекты для тестирования без реальной БД.

Проверка

dotnet build

В .csproj файле увидите установленные пакеты в секции <PackageReference>.

Проверь себя

🧪

Почему Domain Layer не содержит полный пакет MediatR?

🧪

Для чего нужен пакет Moq в тестовых проектах?

🧪

Чем Scalar отличается от Swashbuckle?