0001 — Строга DDD са чистим Core-ом
Контекст
Ова апликација управља правим новцем. Пословна правила распршена по крајњим тачкама, позадинским сервисима и Razor компонентама се разлажу у неразумљивом, неконзистентном понашању — управо где грешка кошта корисника капитала.
Одлука
Пословна логика живи на агрегатима, value объектима и доменским сервисима у src/Core, која се компајлира са нултим зависностима од инфраструктуре (без EF, HttpClient, Docker или ASP.NET). Крајње тачке, MCP алати, компоненте и BackgroundService се организују — никад не одлучују. Правила:
- Без јавних settera; промене стања кроз методе које откривају намеру и штите инваријанте.
- Агрегати се референцирају једни друге преко јаког ID-а, не преко навигационог својства.
- Један
SaveChangesмутира један агрегат; токови између агрегата користе доменске догађаје. - Примитиви који пересецају границу домена су обавијени у value објекте.
- Нарушавања инваријанти бацају Core
DomainException, не исключење из фрејмворка.
Последице
- Пословна правила су јединично тестирана без базе и веб домаћина.
Coreчистоћа је машински примењена одArchitectureGuardTestsи би била неуспешна при грађењу ако се прекрши.- Постоји више церемоније (value објекти, јаки ID-и, доменски догађаји) него анемични модел — ово је намерна цена одржавања правила која управљају новцем исправно и на једном месту.