Пређи на главни садржај

0001 — Строга DDD са чистим Core-ом

Контекст​

Ова апликација управља правим новцем. Пословна правила распршена по крајњим тачкама, позадинским сервисима и Razor компонентама се разлажу у неразумљивом, неконзистентном понашању — управо где грешка кошта корисника капитала.

Одлука​

Пословна логика живи на агрегатима, value объектима и доменским сервисима у src/Core, која се компајлира са нултим зависностима од инфраструктуре (без EF, HttpClient, Docker или ASP.NET). Крајње тачке, MCP алати, компоненте и BackgroundService се организују — никад не одлучују. Правила:

  • Без јавних settera; промене стања кроз методе које откривају намеру и штите инваријанте.
  • Агрегати се референцирају једни друге преко јаког ID-а, не преко навигационог својства.
  • Један SaveChanges мутира један агрегат; токови између агрегата користе доменске догађаје.
  • Примитиви који пересецају границу домена су обавијени у value објекте.
  • Нарушавања инваријанти бацају Core DomainException, не исключење из фрејмворка.

Последице​

  • Пословна правила су јединично тестирана без базе и веб домаћина.
  • Core чистоћа је машински примењена од ArchitectureGuardTests и би била неуспешна при грађењу ако се прекрши.
  • Постоји више церемоније (value објекти, јаки ID-и, доменски догађаји) него анемични модел — ово је намерна цена одржавања правила која управљају новцем исправно и на једном месту.