I'm redesigning our company's existing BL+DAL. Today it is a single dll, directly referenced and is tightly coupled. I'm thinking about a service architecture that would give its services to several UI applications.
I heard about SOA and DDD but could not find any detail sample design.I'm not quite sure about how would be best to divide the components between my assemblies. My options:
- One assembly per domain that includes [Service Layer - BL - DAL]
- One assembly of Service Layer, one per domain of BL , and one per domain of DAL
- One assembly per layer : All Service assembly , all BL assembly , all Dal. Not quite sure this is even SOA
also: Can I call from one domain BL to another domain DAL?
Thanks
I prefer the first one.
Low cohesion. The team usually need to modify all three layers to complete one task.
High coupling. Different domain may have different release frequency, now it task extra cost to achieve it. For example, branches.
You need take more architecture constraints to make the decision, not only DDD.