0001 — Strict DDD مع Core نقي
السياق
يتحرك هذا التطبيق أموالاً حقيقية. عندما تنتشر القواعد التجارية عبر نقاط النهاية والخدمات الخلفية ومكونات Razor، تتحول إلى سلوك غير قابل للاختبار وغير متسق - بالضبط حيث تكلف الأخطاء للمستخدم رأس ماله.
القرار
منطق المجال يعيش على التجميعات وكائنات القيمة وخدمات المجال في src/Core، والتي تجميع مع صفر تبعيات البنية التحتية (لا EF أو HttpClient أو Docker أو ASP.NET). نقاط النهاية وأدوات MCP والمكونات وBackgroundServices تنظم فقط - فهي لا تقرر أبداً. القواعد:
- لا محررات عامة؛ تغييرات الحالة من خلال الطرق التي تكشف عن النية وحماية الثوابت.
- التجميعات تشير إلى بعضها البعض بواسطة معرف قوي، وليس خاصية التنقل.
- واحد
SaveChangesيحور واحد فقط تجميع؛ التدفقات عبر التجميعات استخدم أحداث المجال. - البدائيات التي تعبر حدود المجال يتم لفها في كائنات قيمة.
- انتهاكات الثابت ترمي
DomainExceptionالأساسي، وليس استثناء الإطار.
النتائج
- قواعد المجال قابلة للاختبار بدون قاعدة بيانات أو مضيف ويب.
- نقاء
Coreيتم فرضه بآلة بواسطةArchitectureGuardTestsوسيفشل البناء إذا تم كسره. - هناك المزيد من الحفلات الرسمية (كائنات القيمة، والمعرفات القوية، وأحداث المجال) من نموذج فقير - هذا هو التكلفة المتعمدة للحفاظ على قواعد تحريك الأموال صحيحة وفي مكان واحد.