Eric nel suo libro tocca l'argomento Moduli molto poco. Inoltre, non parla della relazione della struttura dei moduli con contesti limitati con esempi. I contesti limitati contengono moduli o moduli che contengono contesti limitati? Quando un'applicazione ha DDD, quanto può essere estensibile?Estensibili con DDD: Modulo Vs Contesto Limitato in DDD con MEF
La struttura dell'applicazione è molto importante quando progettiamo applicazioni estensibili. Il framework Microsoft MEF può auto-scoprire moduli/componenti da una DLL.
Facciamo un esempio. In un'applicazione di e-commerce, possiamo avere un contesto limitato per l'elaborazione dei pagamenti . L'elaborazione dei pagamenti può essere astratta, quindi posso estendere l'app con altri processori di pagamento come Paypal o Payflow. Attualmente ho solo Paypal, e pochi mesi dopo voglio integrare Payflow. Per integrare Payflow, posso avere un assembly (una dll) che implementa l'interfaccia dell'elaborazione dei pagamenti . Posso rilasciare quella DLL nell'applicazione e il MEF la scoprirà automaticamente.
La sfida qui è, la dll creata per l'elaborazione del pagamento PayFlow è un modulo, non un Contesto Limitato (BC). Se l'ho creato come BC, abbiamo due BC per l'elaborazione dei pagamenti . (Il BC creato per Paypal e il BC per il Payflow). Se strutturiamo l'applicazione con i moduli all'interno di un Contesto Limitato e il Contesto Limitato come un assembly (dll), i moduli possono risiedere nel BC come cartelle e non assemblati (si può pensare ad esso come una libreria C# creata in Visual Studio).
Come possiamo gestire questo problema di estensibilità con DDD? È Elaborazione pagamento, un BC e diverse cartelle sotto di esso come moduli, uno per Paypal ecc ... O abbiamo bisogno di sub-BC all'interno di un altro BC?
Ottima risposta @ eulerfx! – Bern