إنتقل إلى المحتوى الرئيسي

0001 — Strict DDD مع Core نقي

السياق​

يتحرك هذا التطبيق أموالاً حقيقية. عندما تنتشر القواعد التجارية عبر نقاط النهاية والخدمات الخلفية ومكونات Razor، تتحول إلى سلوك غير قابل للاختبار وغير متسق - بالضبط حيث تكلف الأخطاء للمستخدم رأس ماله.

القرار​

منطق المجال يعيش على التجميعات وكائنات القيمة وخدمات المجال في src/Core، والتي تجميع مع صفر تبعيات البنية التحتية (لا EF أو HttpClient أو Docker أو ASP.NET). نقاط النهاية وأدوات MCP والمكونات وBackgroundServices تنظم فقط - فهي لا تقرر أبداً. القواعد:

  • لا محررات عامة؛ تغييرات الحالة من خلال الطرق التي تكشف عن النية وحماية الثوابت.
  • التجميعات تشير إلى بعضها البعض بواسطة معرف قوي، وليس خاصية التنقل.
  • واحد SaveChanges يحور واحد فقط تجميع؛ التدفقات عبر التجميعات استخدم أحداث المجال.
  • البدائيات التي تعبر حدود المجال يتم لفها في كائنات قيمة.
  • انتهاكات الثابت ترمي DomainException الأساسي، وليس استثناء الإطار.

النتائج​

  • قواعد المجال قابلة للاختبار بدون قاعدة بيانات أو مضيف ويب.
  • نقاء Core يتم فرضه بآلة بواسطة ArchitectureGuardTests وسيفشل البناء إذا تم كسره.
  • هناك المزيد من الحفلات الرسمية (كائنات القيمة، والمعرفات القوية، وأحداث المجال) من نموذج فقير - هذا هو التكلفة المتعمدة للحفاظ على قواعد تحريك الأموال صحيحة وفي مكان واحد.