InfoQ

News

PRISM: A WPF Composite UI Framework

Posted by Abel Avram on May 01, 2008 07:22 AM

Community
.NET
Topics
Tags
Frameworks

Complex client applications containing lots of graphical interfaces need to be constructed from various component blocks, perhaps developed by separate teams, and assembled together like a giant puzzle. Such an application has what is called a "Composite UI". The building blocks, or the modules, it is made of, are developed separately, and they should work together and should be assembled into one application with as little effort as possible. A solution, a framework, for that purpose is of great help for architects and developers.

Microsoft has created several solutions over time like Composite UI Application Block (CAB):

It provides proven practices to build complex smart client user interfaces based on well known design patterns such as the Composite pattern, in which simple user interface parts can be combined to create complex solutions, but at the same time allowing these parts to be independently developed, tested, and deployed.

Another Microsoft solution is Smart Client Software Factory:

The Smart Client Software Factory provides an integrated set of guidance that assists architects and developers create composite smart client applications.

Other solutions are Mobile Client Software Factory for the Windows Mobile platform, and Web Client Software Factory for the web.

PRISM stands for PResentation Integration SysteM, and it is a project also endorsed by Microsoft specifically targeted at WPF, and hosted on CodePlex. According to Glenn Block, a Technical Product Planner for Microsoft, PRISM offers the following benefits:

    • Provides complete support for WPF
    • Dynamically composes user interface components
    • Application modules are developed, tested and deployed by separate teams
    • Allows incremental adoption
    • Provides an integrated user experience

Right now, PRISM "includes a reference implementation, a reusable library code and pattern guidance", but the plan is to develop a framework which composite applications can be built upon. The latest release was made available on April 15th, 2008 and it was an intermediate in-development one. The current source code depends on Castle Windsor, but the final release won't depend on that.

3 comments

Reply

Caliburn by Rob Eisenberg Posted May 1, 2008 1:17 PM
Prism by Glenn Block Posted May 8, 2008 3:43 AM
Castle Windsor by Glenn Block Posted May 8, 2008 3:45 AM
  1. Back to top

    Caliburn

    May 1, 2008 1:17 PM by Rob Eisenberg

    Just an FYI, Caliburn does everything Prism can and much, much more. It's been used in production applications and is available as an open source framework right now.

  2. Back to top

    Prism

    May 8, 2008 3:43 AM by Glenn Block

    Hi Abel Prism does not stand for Presentation Integration System. This was just something I throughout in a blog post. For now Prism has no meaning other than relating to a prism itself :) As far as how Prism compares to other similar offerings including those we have delivered in the past, I have a post on this here. http://blogs.msdn.com/gblock/archive/2008/05/08/prism-vs-framework-xxx.aspx

  3. Back to top

    Castle Windsor

    May 8, 2008 3:45 AM by Glenn Block

    Also, Prism does not depend on Castle Windsor as these were our early spikes. Prism does not actually depend on any specific container. Our Reference Implementation and Quickstarts use Unity, however the core Prism libraries do not depend on Unity.

Exclusive Content

Rationalizing the Presentation Tier

Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs.

Agile Project Management: Lessons Learned at Google

In this presentation filmed during QCon 2007, Jeff Sutherland, the creator of Scrum, talks about his visit at Google to do an analysis of Google's first implementation of Scrum.

AtomServer – The Power of Publishing for Data Distribution

In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera, which is now available as open source.

An Introduction to Virtualization

It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is also being applied to networking, storage, and application infrastructure.

REST Anti-Patterns

In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them.

Choosing between Routing and Orchestration in an ESB

In this article, Adrien Louis and Marc Dutoo discuss the differences and relative merits of using orchestration vs. routing in a typical ESB setup, and discuss various implementation options.

Enterprise Batch Processing with Spring

Wayne Lund discusses batch processing, Spring Batch objectives and features, scenarios for usage, Spring Batch architecture, scaling, example code, failures and retrying, and the future roadmap.

User Story Estimation Techniques

Developer Jay Fields draws on his experiences as a ThoughtWorks consultant to describe effective user story estimation techniques.