Eric in seinem Buch berührt das Thema Module sehr wenig. Er spricht auch nicht über die Beziehung der Struktur von Modulen zu beschränkten Kontexten mit Beispielen. Haben Bounded Contexts Module oder Module die Bounded Contexts? Wenn eine Anwendung über DDD verfügt, wie einfach kann es erweiterbar sein?Extensibility mit DDD: Modul Vs begrenzten Kontext in DDD mit MEF
Die Struktur der Anwendung ist sehr wichtig, wenn wir erweiterbare Anwendungen entwerfen. Das Microsoft MEF-Framework kann Module/Komponenten aus einer DLL automatisch erkennen.
Nehmen wir ein Beispiel. In einer E-Commerce-Anwendung können wir einen beschränkten Kontext für Payment Processing haben. Die Zahlungsabwicklung kann abstrakt sein, so dass ich später die App um weitere Zahlungsprozessoren wie Paypal oder Payflow erweitern kann. Momentan habe ich nur Paypal und einige Monate später möchte ich Payflow integrieren. Um Payflow zu integrieren, kann ich eine Assembly (eine DLL) haben, die die Schnittstelle Payment Processing implementiert. Ich kann diese DLL in der Anwendung löschen, und das MEF wird es automatisch erkennen.
Die Herausforderung hier ist, die für die PayFlow-Zahlungsabwicklung erstellte DLL ist ein Modul, kein Bounded Context (BC). Wenn ich es als BC erstellt habe, haben wir zwei BCs für Payment Processing. (Das BC wurde für Paypal und das BC für den Payflow erstellt). Wenn wir die Anwendung mit Modulen in einem beschränkten Kontext und dem beschränkten Kontext als eine Assembly (DLL) strukturieren, können sich die Module im BC als Ordner und nicht als Assemblys befinden (Sie können sich diese als in Visual Studio erstellte C# -Bibliothek vorstellen).
Wie können wir dieses Erweiterungsproblem mit DDD umgehen? Ist Zahlung Verarbeitung, ein BC und verschiedene Ordner darunter als Module, eine für Paypal etc ... Oder brauchen wir Sub-BC in einem anderen BC?
Große Antwort @eulerfx! – Bern