IT:AD:DDD:Modules
General
Applications, tend to grow. That is, if you have done a good job, and the client trusts you to add more functionality.
Modules allow for code concepts to me kept separate in the app (Contacts, Invoices, Appointments, etc.)
Specs
- Module
- A Single Model usually spans n Modules (Invoices, COntacts)
- Can be by Assembly or just Namespace
- Not to be confused with a Bounded Context
- If a Model is a Story, a Module is a Chapter…
- Examples:
- ERP:
- Payroll
- HR
- Billing
- Warehouse
- Bounded Context
- Has its own Model, can have its own Db,
- Think of it as quite separate from other elements within the Shell
- 1-to-1 Relationship between EF (or NHibernate, etc.) Model and Bounded Context
- Patterns to handle communication between Contexts are:
* Anti-Corruption Layer: * Facade: to expose minimal surface area * Adapters: to translate their interface into our interface * Translators: map entities from theirs to ours to translate data between the two.* Shell
- …
## Benefits ##
- Separation of Concerns
- Deployment is eased (sections can be released while others are turned off)
Considerations
* A Communication System will be required between Modules
Conclusion
..