This guide will show you how to use Prism to implement the Model-View-View-Model (MVVM) pattern in your application, and how to use it along with commands and interaction requests to encapsulate application logic and make it testable. It will show you how to split an application into separate functional modules that can communicate through loosely coupled events, and how to integrate those modules into the overall application. It will show you how to dynamically construct a flexible user interface by using regions, and how to implement rich navigation across a modular application. Prism allows you to use these design patterns together or in isolation, depending on your particular application requirements. About the Author
Bob Brumfield is a senior software developer with the Microsoft® patterns & practices team, primarily working on Prism, Enterprise Library, and Web Guidance projects. Before joining Microsoft, he focused on helping teams deliver Microsoft-based solutions as a consultant in the Colorado Rocky Mountain region. Bob has more than 15 years of experience with professional software development and architecture.
Geoff Cox works as a principal consultant for Southworks, Inc. He enjoys developing software at every level of the stack-from desktop and web clients to services and databases. His passion for coding revolves around the .NET Framework, design patterns, user interface design, and agile teamwork.
David Hill is the principal architect for the Microsoft® patterns & practices team. Much of his 10 years at Microsoft have been focused on client application development. Before joining Microsoft, David specialized in developing scientific and engineering applications. David has more than 20 years of experience in professional software development.
Brian Noyes is chief architect of IDesign, a Microsoft® Regional Director, and MVP. Brian spends most of his time consulting with customers around the world on how to best architect and design their applications to fully leverage the Microsoft .NET Framework, with particular focus on Silverlight®, WPF, ASP.NET, WCF, and Workflow, as well as teaching master classes on all of these technologies. He is the author of Developing Applications in Windows® Workflow Foundation, Smart Client Deployment with ClickOnce, and Data Binding with Windows Forms 2.0. Brian speaks at conferences worldwide, including Microsoft TechEd, DevConnections, DevTeach, DevReach, VSLive, and others. Brian got started programming as a hobby while flying F-14 Tomcats in the US Navy, later turning it into a second career. You can reach Brian through his blog at .
Michael Puleio is a senior software developer, pragmatic agilist, and coffee addict. He has worked for Microsoft® for over 10 years, and is currently a member of the patterns & practices (p&p) team. At p&p, he has delivered applied engineering guidance in a number of areas, including Windows® client development (with Prism 4 and the Smart Client Software Factory), the web space (in the Web Guidance projects and the Web Client Software Factory). He also contributed to guidance on data access technologies and acceptance testing. Before joining the p&p team, Michael developed applications, embedded systems, and services at MSNTV (formerly WebTV) and MSN. Previous to Microsoft, Michael worked on a range of software challenges, including computer reservation systems, web application development, and 3D modeling for geophysics. Michael blogs at blogs.msdn.com/mpuleio.
Karl Shifflett currently works for the Microsoft® patterns & practices (p&p) team, where he manages the desktop projects such as Prism and the Web Guidance project. He is one of the authors of the Developer's Guide to Microsoft Prism. Karl is very passionate about product quality and Microsoft customers. He is very well known in the .NET community, loves teaching, and enjoys writing about the .NET Framework.
Table of Contents:
Introduction
· Why Use Prism?
· Getting Started with Prism
· An Overview of Prism
· More Information
Initializing Prism Applications
· What Is a Bootstrapper?
· Key Decisions
· Core Scenarios
· More Information
Managing Dependencies Between Components
· Key Decision: Choosing a Dependency Injection Container
· Core Scenarios
· Using Dependency Injection Containers and Services in Prism
· Using IServiceLocator
· More Information
Modular Application Development
· Benefits of Building Modular Applications
· Core Concepts
· Key Decisions
· Core Scenarios
· More Information
Implementing the MVVM Pattern
· Class Responsibilities and Characteristics
· Class Interactions
· Construction and Configuration
· Key Decisions
· More Information
Advanced MVVM Scenarios
· Commands
· Handling Asynchronous Interactions
· User Interaction Patterns
· Advanced Construction and Configuration
· Testing MVVM Applications
· More Information
Composing the User Interface
· UI Layout Concepts
· UI Layout Scenarios
· UI Design Guidance
· UI Layout Key Decisions
· More Information
Navigation
· Navigation in Prism
· More Information
Communication Between Loosely Coupled Components
· Commanding
· Region Context
· Shared Services
· Event Aggregation
· More Information
Sharing Code Between Silverlight and WPF
· Goal and Benefits
· Out of Scope
· Multi-Targeting Scenarios
· Multi-Targeted Considerations
· Multi-Targeted Elements
· A Solution to Multi-Targeting: Multiple Linked Projects
· Creating Multi-Targeted Applications
· More Information
Deploying Prism Applications
· Deploying Silverlight Prism Applications
· Deploying WPF Prism Applications
· More Information
Appendix Glossary
Appendix Patterns in the Prism Library
· Adapter
· Application Controller Pattern
· Command Pattern
· Composite and Composite View
· Dependency Injection Pattern
· Event Aggregator Pattern
· Façade Pattern
· Inversion of Control Pattern
· Observer Pattern
· Presentation Model Pattern
· Registry Pattern
· Repository Pattern
· Separated Interface and Plug-In
· Service Locator Pattern
· More Information
Appendix Prism Library
· Registering with Visual Studio 2010
· Organization of the Prism Library
· The Prism Library Source
· Modifying the Library
· Running the Tests
· More Information