I usually found myself designing my application in the following way:
- One DLL containing interfaces for a desired subsystem. For example,
- One new DLL per each strategy (or implementations) of the said subsystem. For example:
This will result in a very big solution with a lot of projects, but on the other hand, would give the consumer the chance to choose the appropiate DLL for his needs.
If we had a single DLL called
Company.Framework.Persistence.dll, the consumer would have to load a lot of strategies that he may never use. Having modularized DLL would solve this problem.
Is this good practice? Is there a disadvantage with this design?