In the world of Windows Presentation Foundation (WPF) or Silverlight, Prism is a set of assets that helps you build modular enterprise applications. Often, these applications contain rich user interfaces and evolve over time as business requirements evolve. Prism can improve your ability to deliver consistent, maintainable, and industry-standard software. Here are 7 things you absolutely need to know about Prism before venturing into your first Prism project.
1. Prism has had different product names
Prism was an early “code name” for the Composite Application Library (CAL), but then it was renamed to Composite Application Guidance for WPF and Silverlight. That’s a mouthful. Now it’s renamed again to Prism, probably for the better.
2. Prism is on CodePlex
You can obtain Prism from CodePlex at http://compositewpf.codeplex.com/. Earlier versions of Prism required you to download files from both CodePlex and MSDN, but thankfully it is simpler now. You can download all the requisite libraries, source code, and documentation from the CodePlex site above.
3. Prism has many assets
Prism is a collection of library source code (that can be modified or extended if needed), signed binaries, extensions to the Unity Application Block and Managed Extensibility Framework (MEF), reference implementations, quick starts, and documentation. The CodePlex site also offers additional material in the form of blogs, knowledge base, and known issues. Finally, many industry professionals, including Intertech Consultants, have written articles, blogs, white papers, and sample programs to help you learn the various aspects of Prism.
4. Prism has multiple versions
The current production version of Prism is 2.2, which was released in May 2010. The next release of Prism is 4.0, which is currently in Beta (drop 10). Both versions (and earlier releases also) can be downloaded from the link provided above. There is no Prism version 3.x.
If you’re looking to build and release a new Prism WPF (or Silverlight) application soon, then Prism 2.2 is the better choice given its stable status. Prism 4.0 is planned for industry release in the Fall of 2010, meaning it may be your better option if you’re planning or soon beginning a new Prism WPF project. Both of these versions target either WPF or Silverlight applications developed with Visual Studio 2010 using .NET Framework 3.5 SP1 or 4.0 as the baseline framework. If your project doesn’t align with those requirements, then an earlier version of Prism is probably a better choice.
5. Prism provides choices
Prism has many great pieces of functionality, but you don’t need to use all of them. It’s like the people you friend on Facebook, or the food you eat from a buffet, you get to choose what pieces of Prism are appropriate for your application. If you like the concept of user interface composition but nothing else, that’s fine – use that only. If you don’t want to leverage any Prism functionality except the Event Aggregator, go for it. You choose what’s right for each project.
From an architectural perspective, Prism provides the following options
Bootstrapper – this provides application initialization
Shell and Shell Presenter – these provide the general visual layout structure and behavior for an application
Regions – these provide placeholders for visual content and enable composite views
Modules – these plug-ins enforce vertical or horizontal slices (or both) in an application, and enforce adherence to your chosen Presentation Model pattern
Views – these provide the content to display on the screen
Synchronous Communication – via commands
Asynchronous Communication – via event aggregation or services
Services – these provide either module-specific or shared-use functionality
Multi-targeting – this provides ability to use the same code base to deploy as either a WPF or Silverlight application
6. Prism employs patterns
Most enterprise applications initially require or evolve to a point where common patterns are employed to provide application maintainability, performance, decoupling, etc. Prism applications also employ patterns, many of which are supported directly in the Prism libraries or reference implementations. Some of the key patterns you should know/learn include:
Dependency Injection / Inversion of Control
Presentation Model – either Model-View-ViewModel (MVVM) or Model-View-Presenter (MVP)
7. Upgrading Prism 2.x applications to Prism 4.0 is not seamless
Prism 4.0 changed and deleted some namespace and assembly names, meaning you’ll need to adjust your Prism library references accordingly. Here’s a brief summary of changes (realizing that 4.0 is not yet final release and this info could change).
Microsoft.Practices.Composite namespace changed to Microsoft.Practices.Prism across all assemblies
Composite.Presentation namespace deleted and its classes moved to Microsoft.Practices.Prism namespace
Prism 4.0 added a new XAML XmlnsDefinition of http://www.codeplex.com/prism. Although the existing XmlnsDefinition of http://www.codeplex.com/CompositeWPF still exists, it is recommended that the new one be used. We’re assuming that the existing definition will eventually be deleted permanently.
The bootstrapper is enhanced in Prism 4.0 to better enable use of Unity or MEF. If you are using the UnityBootstrapper class, it is now derived from a new Bootstrapper base class in the Microsoft.Practices.Prism assembly. Additionally, some property names and method names were changed. Here’s a brief summary of changes (realizing that 4.0 is not yet final release and this info could change).
LoggerFacade property renamed to Logger
GetModuleCatalog method renamed to CreateModuleCatalog
ConfigureModuleCatalog was added
ConfigureServiceLocator was added
There are other library changes affecting the module catalog, regions, and event aggregator that may impact your effort required to upgrade a Prism 2.x application to 4.0. The Prism 4.0 release documentation and API reference would be good starting points for more information.
It can be a little daunting to get started on a Prism application. Start small, know your requirements, and preferably do a prototype to get your feet wet with the technology. Intertech Consultants have implemented several real-life Prism applications for WPF and Silverlight; give us a call to help you guarantee your application’s success.