Composite WPF Guidance

A month ago I started working on a new project within patterns & practices: Composite WPF (code name PRISM). If you're curious about the name PRISM, please read Glenn's blog entry. We are looking to provide guidance on how to create modular, composible applications on WPF.

What are modular, composible applications?

Imagine that you want to need to build an application that, due to its size and complexity, needs to be split up and developed by several teams. Let's say you have several teams developing modules that can be assembled at run time. There will also be a team in charge of the shared infrastructure. You also need a way for the UI elements from each module to be brought together into a reasonable composite. You also want the modules to be loosely coupled from eachother (no static references). You also want a way for these modules to communicate with eachother. Since there are no static references, you can't take advantage of standard .NET eventing. You also want to expose services and share them across modules.

This scenario was first addressed by the Composite UI Application Block (CAB) and the Smart Client Software Factory. This scenario was then addressed for Windows Mobile 5: Mobile Client Software Factory. For the composible applications in the web space, the Web Client Software Factory was developed.

The demand for CAB functionality interoperable with WPF's look and feel prompted the community project WPF CAB.

The new PRISM project takes a fresh look at what modular, composible applications mean in WPF. Stay tuned in for more thoughts as we go through the process of designing, arguing, and building.