C# – Building a highly modular business application with WPF


I'm fleshing out a WPF business application in my head and one thing that sparked my interest was how I should handle making it incredibly modular. For example, my main application would simply contain the basics to start the interface, load the modules, connect to the server, etc. These modules, in the form of class libraries, would contains their own logic and WPF windows. Modules could define their own resource dictionaries and all pull from the main application's resource dictionary for common brushes and such.

What's the best way to implement a system of this nature? How should the main interface be built so that the modules it loads can alter virtually any aspect of its user interface and logic?

I realize it's a fairly vague question, but I'm simply looking for general input and brainstorming.


Best Solution

Check out Composite Client Application Guidance

The Composite Application Library is designed to help architects and developers achieve the following objectives:

Create a complex application from modules that can be built, assembled, and, optionally, deployed by independent teams using WPF or Silverlight.

Minimize cross-team dependencies and allow teams to specialize in different areas, such as user interface (UI) design, business logic implementation, and infrastructure code development.

Use an architecture that promotes reusability across independent teams.

Increase the quality of applications by abstracting common services that are available to all the teams.

Incrementally integrate new capabilities.