0001 — Αυστηρό DDD με καθαρό Core
Πλαίσιο
Αυτή η εφαρμογή μετακινεί πραγματικά χρήματα. Οι κανόνες επιχειρήσεων διασκορπισμένοι σε τελικά σημεία, υπηρεσίες υποβάθρου και συστατικά Razor αποσυντίθενται σε δοκιμαστικά, ασυνεπή συμπεριφορά — ακριβώς όπου ένα σφάλμα κοστίζει σε έναν χρήστη κεφάλαιο.
Απόφαση
Η λογική του τομέα ζει σε συγκεντρώσεις, αντικείμενα αξίας και υπηρεσίες τομέα στο src/Core, το οποίο
μεταγλωττίζεται με μηδενικές εξαρτήσεις υποδομής (όχι EF, HttpClient, Docker ή ASP.NET). Τα τελικά σημεία,
εργαλεία MCP, συστατικά και BackgroundServices ορχηστρώνουν — δεν αποφασίζουν ποτέ. Κανόνες:
- Χωρίς δημόσιες ιδιότητες που ορίζουν. οι αλλαγές κατάστασης γίνονται μέσω μεθόδων που αποκαλύπτουν πρόθεση και φυλάσσουν αναλλοίωτα.
- Οι συγκεντρώσεις αναφέρουν η μία την άλλη με ισχυρό ID, όχι ιδιότητα πλοήγησης.
- Ένα
SaveChangesμεταλλάσσει μία συγκέντρωση. οι ροές μεταξύ συγκεντρώσεων χρησιμοποιούν γεγονότα τομέα. - Τα πρωτόγονα που διασχίζουν ένα όριο τομέα τυλίγονται σε αντικείμενα αξίας.
- Οι παραβιάσεις αναλλοίωτων ρίχνουν ένα Core
DomainException, όχι εξαίρεση πλαισίου.
Συνέπειες
- Οι κανόνες τομέα είναι δοκιμάσιμοι μονάδας χωρίς βάση δεδομένων ή διακομιστή web.
- Η καθαρότητα
Coreεπιβάλλεται μηχανικά απόArchitectureGuardTestsκαι θα αποτύχει στη δημιουργία εάν διαταραχθεί. - Υπάρχει περισσότερη τελετουργία (αντικείμενα αξίας, ισχυρά IDs, γεγονότα τομέα) από ένα αναιμικό μοντέλο — αυτό είναι το σκόπιμο κόστος της διατήρησης των κανόνων για χρήματα σωστή και στη μία θέση.