Easy📖Теория1 min

Шаг 2: Структура проектов и зависимости

Создание четырёх проектов по слоям Clean Architecture, настройка ссылок между ними и добавление тестовых проектов

Шаг 2: Структура проектов и зависимости

Создадим четыре проекта (по одному на каждый слой) и два тестовых. Затем настроим правильные зависимости между ними.

Зачем четыре проекта

Четыре проекта дают физическую изоляцию слоёв. Компилятор не позволит обратиться к классу из слоя, на который нет ссылки.

Проект Тип Назначение
Domain Class Library Бизнес-правила
Application Class Library Координация операций
Infrastructure Class Library БД, внешние сервисы
API Web API HTTP endpoints

Создание проектов в Rider

Domain (Class Library):

  1. Правый клик на src -> Add -> New Project
  2. Шаблон: Class Library, Name: OrderManagement.Domain, Framework: .NET 10.0
  3. Удалите Class1.cs

Application -- аналогично: OrderManagement.Application

Infrastructure -- аналогично: OrderManagement.Infrastructure

API (Web API):

  1. Шаблон: ASP.NET Core Web API, Name: OrderManagement.API
  2. Framework: .NET 10.0

Тестовые проекты (xUnit Test Project):

  • OrderManagement.Domain.Tests в папке tests
  • OrderManagement.Application.Tests в папке tests

Настройка зависимостей

Domain        <- ни от кого
Application   <- от Domain
Infrastructure <- от Domain + Application
API           <- от Application + Infrastructure

Добавление через Rider: правый клик на проект -> Add -> Reference -> выбрать нужные проекты.

Application -> Domain: ссылка на Domain

Infrastructure -> Domain + Application: ссылки на оба

API -> Application + Infrastructure: ссылки на оба

API не ссылается на Domain напрямую -- общение идёт через Application Layer (Commands, Queries, DTOs).

Проверка

dotnet build

Результат: Build succeeded. 0 Warning(s). 0 Error(s)

Структура на диске

OrderManagement/
├── OrderManagement.sln
├── src/
│   ├── OrderManagement.Domain/
│   ├── OrderManagement.Application/
│   ├── OrderManagement.Infrastructure/
│   └── OrderManagement.API/
└── tests/
    ├── OrderManagement.Domain.Tests/
    └── OrderManagement.Application.Tests/

Файл .csproj -- XML-файл, описывающий проект: фреймворк, пакеты, ссылки. Rider редактирует его автоматически.

Проверь себя

🧪

Почему Domain создаётся как Class Library, а не Web API?

🧪

Что описывает файл .csproj?

🧪

Почему API не ссылается напрямую на Domain?