The first drops of the Composite Application Guidance for WPF did have completely separated the interfaces from their implementation. The team decided to change this design to separate UI-specific
components from common components used by Composite Applications:
The Microsoft.Practices.Composite assembly contains the implementation of the Composite Application Library core components such as modularity, logging and communication services, and several core interfaces’
definitions. This assembly does not contain UI-specific elements and could be potentially used for both WPF and Winforms applications.
The Microsoft.Practices.Composite.Wpf assembly contains the implementation of Composite Application Library components that target Windows Presentation Foundation applications including commands, regions, and
The reason that some interfaces and implementations remains in the same assembly is to keep a simpler usage and avoid you having to add more references to your projects, or if you prefer to consume
the library as source code, avoid having several projects in your solution. Having separate assemblies for interface would trigger an assembly explosion that goes against the
simple first principle.
Do you have a concrete scenario where having implementations close to the interfaces would be a problem? If so, please let us know, so the Prism team can take the feedback into account.
Furthermore, please feel free to add a
Workitem in the Issue Tracker to let the people vote it and perhaps your suggestion could be consider
for future releases.
Please let me know if this helps.