Skip to main content

0001 — Αυστηρό DDD με καθαρό Core

Πλαίσιο​

Αυτή η εφαρμογή μετακινεί πραγματικά χρήματα. Οι κανόνες επιχειρήσεων διασκορπισμένοι σε τελικά σημεία, υπηρεσίες υποβάθρου και συστατικά Razor αποσυντίθενται σε δοκιμαστικά, ασυνεπή συμπεριφορά — ακριβώς όπου ένα σφάλμα κοστίζει σε έναν χρήστη κεφάλαιο.

Απόφαση​

Η λογική του τομέα ζει σε συγκεντρώσεις, αντικείμενα αξίας και υπηρεσίες τομέα στο src/Core, το οποίο μεταγλωττίζεται με μηδενικές εξαρτήσεις υποδομής (όχι EF, HttpClient, Docker ή ASP.NET). Τα τελικά σημεία, εργαλεία MCP, συστατικά και BackgroundServices ορχηστρώνουν — δεν αποφασίζουν ποτέ. Κανόνες:

  • Χωρίς δημόσιες ιδιότητες που ορίζουν. οι αλλαγές κατάστασης γίνονται μέσω μεθόδων που αποκαλύπτουν πρόθεση και φυλάσσουν αναλλοίωτα.
  • Οι συγκεντρώσεις αναφέρουν η μία την άλλη με ισχυρό ID, όχι ιδιότητα πλοήγησης.
  • Ένα SaveChanges μεταλλάσσει μία συγκέντρωση. οι ροές μεταξύ συγκεντρώσεων χρησιμοποιούν γεγονότα τομέα.
  • Τα πρωτόγονα που διασχίζουν ένα όριο τομέα τυλίγονται σε αντικείμενα αξίας.
  • Οι παραβιάσεις αναλλοίωτων ρίχνουν ένα Core DomainException, όχι εξαίρεση πλαισίου.

Συνέπειες​

  • Οι κανόνες τομέα είναι δοκιμάσιμοι μονάδας χωρίς βάση δεδομένων ή διακομιστή web.
  • Η καθαρότητα Core επιβάλλεται μηχανικά από ArchitectureGuardTests και θα αποτύχει στη δημιουργία εάν διαταραχθεί.
  • Υπάρχει περισσότερη τελετουργία (αντικείμενα αξίας, ισχυρά IDs, γεγονότα τομέα) από ένα αναιμικό μοντέλο — αυτό είναι το σκόπιμο κόστος της διατήρησης των κανόνων για χρήματα σωστή και στη μία θέση.