views:

138

answers:

1

In Evans DDD book he speaks of segregating concepts in the domain with "modules". The term "module" can translate to a number of different things in software development, both conceptual and concrete, so I'm wondering how would this concept of DDD modules be expressed in a C#.NET system and if there is any direct correlation to other uses of the term "module" in software development (For example Evans mentions that some developers express DDD modules as Java packages which I think would be analogous to .NET assemblies).

I'm thinking that you could probably express this concept literally with separate .NET assemblies or perhaps with namespaces (Which is kind of what were doing now). We are planning on reducing the number of projects within our solution to improve build times so I'm really interested in how this concept could be applied in a single assembly.

Thanks!

m

+1  A: 

You already answered your own question. That you use either projects or namespaces as a logical separation of modules. You can also use the break down of projects on their type to imply meaning also, as in web services projects are exposed modules vs internal ones etc.

Personally I am a fan of using actual projects and later if the number of DLLs is ever an issue to condense it using ILMerge in my production builds, of course my solution is only around 30~ projects at the moment.

Chris Marisic
Excellent, thanks for the feedback.
Mike OBrien