0001 — DDD Ketat dengan Core Tulen
Konteks
Apl ini menggerakkan wang sebenar. Peraturan perniagaan yang tersebar di seluruh titik akhir, perkhidmatan latar belakang, dan komponen Razor rosak menjadi tingkah laku yang tidak dapat diuji, tidak konsisten — tepat di mana pepijat menelan modal pengguna.
Keputusan
Logik domain hidup pada agregat, objek nilai, dan perkhidmatan domain dalam src/Core, yang dikompil dengan pergantungan infrastruktur sifar (tiada EF, HttpClient, Docker, atau ASP.NET). Titik akhir, alat MCP, komponen, dan BackgroundServices mengorkestra — mereka tidak pernah memutuskan. Peraturan:
- Tiada setter awam; perubahan keadaan melalui kaedah yang mendedahkan niat yang menjaga invariant.
- Agregat merujuk satu sama lain mengikut ID kuat, bukan harta navigasi.
- Satu
SaveChangesbermutasi satu agregat; aliran agregat silang menggunakan peristiwa domain. - Primitif melintasi sempadan domain dibungkus dalam objek nilai.
- Pelanggaran invariant membaling
DomainExceptionCore, bukan pengecualian rangka kerja.
Akibat
- Peraturan domain boleh diuji unit tanpa pangkalan data atau hos web.
- Kemurnian
Coredikuatkuasakan mesin olehArchitectureGuardTestsdan akan gagal binaan jika rosak. - Ada lebih banyak upacara (objek nilai, ID kuat, peristiwa domain) daripada model anemik — ini adalah kos sengaja menyimpan peraturan pergerakan wang betul dan di satu tempat.