Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Prism Prevents One Incomplete Feature from Derailing an Entire Release

Prism Prevents One Incomplete Feature from Derailing an Entire Release

This item in japanese


For many enterprise-scale applications there is a big problem with deploying atomic stacks. Having modular code from the developer’s point of view doesn’t help when applications have to be deployed in an all-or-nothing fashion and one bug can bust the whole release. Prism addresses this by allowing you do deploy a shell to the users separately from any specific functionality. Individual features are released separately as modules. These modules may be stored locally, on a corporate file share, or served up by a web site.

Developers are responsible for creating the Shell, the hosting application, and defining Regions. Regions are placeholders where dynamic content can be loaded from Modules. A Module should be constructed in the standard MVC pattern with one or more views, a presenter, and a model.

The Prism framework offers a Module Catalog, a Module Manger, and a Region Manager. The catalog of modules can be populated via code, a XAML file, a configuration file, or by walking a directory. The manager then loads the modules, either immediately or on demand. The Region manager loads views from the Modules into the correct Region.

Modules do not normally communicate directly with one-another. Instead, cross-module communication is handled via the Event Aggregator. This is a multiple-publisher, multiple-subscriber event system.

The recently released Prism 4.0 supports WPF and Silverlight 4 and is available under the Microsoft Public License.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p