Composite Application Guidance, affectionately known as Prism, version 2 was released in oct 2009. Prism provides guidance and code that can help you build modular applications that can adapt to constant changing requirements. Prism guidance is a set of tools, samples, references and written guidance to help you more easily build modular applications. Generally the “modular” application will feature several screens, flexible user interaction and role-based behavior. Composite applications using these patterns are meant to be loosely coupled and contain independently evolving pieces that can work together. They are “built to last” and “built for change.” This means that the application’s expected lifetime is measured in years and that it will change in response to new, unforeseen requirements. This application may start small and over time evolve into a composite client—composite applications use loosely coupled, independently evolvable pieces that work together in the overall application. Applications that do not demand these features and characteristics may not benefit from the Composite Application Guidance.
What’s new Prism 2.0?
- Composite Support for Silverlight: Provides guidance on modularity, UI composition, commanding, and event aggregator in Silverlight. The Reference Implementation demonstrates how to use the Prism library with Silverlight.
- Multi-targeting: Ability to share code between Silverlight and WPF. Provide guidance in the form of patterns, documentation, and tooling on how to share code between Silverlight and WPF. The tooling has its own msi that you can download.
- Improved UI Composition: Added View Discovery to UI Composition. View Discovery: when a region is created, the region looks for all the ViewTypes associated with the region and automatically instantiates and loads the corresponding views. This is a simple approach to create new views.
- Hands-on-Lab for Silverlight: Provide a Hands-on-Lab for Silverlight that walks you through how to create your first application using Prism.
- New UI: Upgraded the UI with this release which includes new Silverlight and WPF animations.
The Prism release adapts Model-View-ViewModel (MVVM) model (refers to this as the presentation model to match what some other pattern documentation in the greater technology world uses) in the reference implementation of the Stock Trader application.
Prism 2 is an evolution from a July 2008 release (Prism 1) that was primarily for WPF applications. The version v2 release brings updates and those concepts to Silverlight, including an implementation of commanding in Silverlight as well as demonstration of the use of input validation using these concepts.
Prism consists of:
- Reusable library components, for both WPF and Silverlight.
- All source code, Unit tests, Automated acceptance tests.
- Hands on labs (26) that guide you through all aspects of creating a composite application.
- Quickstarts (9) that illustrate all components of prism.
- A completely functional reference implementation that shows you how to build a composite application.
- A lot of documentation and guidance:
- How to create composite applications
- How to use the Prism libraries
- How to use Dependency Injection in your application (Unity)
- How to create applications that target both WPF and Sliverlight.
- Which design patterns were used to create prism
- How to use separated presentation patterns (like Model – View – Viewmodel) to test your UI logic
- And much, much more.
- Api Reference documentation
- A Visual Studio Plugin that helps you to target both WPF and Silverlight with a single codebase.
You should consider using prism:
- If you want to create modular applications, in WPF and / or Silverlight so you can Develop, Test, Version and Deploy your modules independently of each other.
- If you want to create an application that targets both WPF and Silverlight with a single codebase, or at least reuse a lot of code assets between WPF and Sliverlight.
- If you want to minimize initial download size Silverlight applications. Prism allows you to just download the minimum of functionality you need to start your application. Other modules can be downloaded on a background thread or on demand.
- If you are interested in using separated presentation patterns, because you want to create Unit Tests for your UI logic or if you want to make it easier to reskin your application.