24
Christian Thilmany Blog: www.flyover18.com UX Architect Microsoft Corporation

Building Composite Applications with Silverlight - Prism 2.0

Embed Size (px)

DESCRIPTION

Building Composite Applications with Silverlight - Prism 2.0

Citation preview

Page 1: Building Composite Applications with Silverlight - Prism 2.0

Christian ThilmanyBlog: www.flyover18.comUX ArchitectMicrosoft Corporation

Page 2: Building Composite Applications with Silverlight - Prism 2.0

Session Objectives And Takeaways• Session Objective(s):

• Able to determine RIA composite application scenarios and recommend solutions for the scenarios using Prism for Silverlight and WPF.

• Prism – V2 out now• Provides written and code-example guidance for

composite solution space• Supports targeting both Silverlight & WPF

composite applications

Page 3: Building Composite Applications with Silverlight - Prism 2.0
Page 4: Building Composite Applications with Silverlight - Prism 2.0
Page 5: Building Composite Applications with Silverlight - Prism 2.0
Page 6: Building Composite Applications with Silverlight - Prism 2.0
Page 7: Building Composite Applications with Silverlight - Prism 2.0
Page 8: Building Composite Applications with Silverlight - Prism 2.0

Prism-What’s in the boxPrism – Composite Client Application

Guidance for WPF and SilverlightLibraryReference ImplementationDocumentationQuick-Starts & How-To’sCommunity – CodePlex

Prism 1.0 – WPFReleased July 2008

Prism 2.0 – SilverlightJust Released Feb 2009!

Page 9: Building Composite Applications with Silverlight - Prism 2.0
Bob Brumfield
Outline modules and views(?) in colors (Green)
Page 10: Building Composite Applications with Silverlight - Prism 2.0
Page 11: Building Composite Applications with Silverlight - Prism 2.0

ModulesUnit Of Application Assembly

Collection of Related ComponentsFeature, Services, Views, Data AccessMandatory or Optional or Role SpecificExample: Banking app: Checking Module,

Credit Card Module, Trading Module, News Module

Unit Of DevelopmentIndependent Development/Testing

Unit Of DeploymentUp-Front, Background or On-Demand

Page 12: Building Composite Applications with Silverlight - Prism 2.0

ModulesModule Discovery

Pluggable CatalogsModule Loading

Background or On-Demand

Module Module LoaderLoader

Extended InExtended InPrism 2.0!Prism 2.0!

Bob Brumfield
Fix animation
Page 13: Building Composite Applications with Silverlight - Prism 2.0

Modules & Catalogs

Page 14: Building Composite Applications with Silverlight - Prism 2.0

UI CompositionShell – Application Host WindowRegions – Named Areas For View PlacementViews – Encapsulate UI & Presentation Logic

RegionRegion

Region

Region

RegionRegion

// View InjectionIPositionPresentationModel presentationModel = …;

IRegion mainRegion = regionManager.Regions[ "MainRegion" ];

mainRegion.Add( presentationModel.View );<TabControl RegionManager.RegionName= "MainRegion">

<ItemsControl RegionManager.RegionName= “ResearchRegion” />

<ContentControlRegionManager.RegionName= “ActionRegion” />

Page 15: Building Composite Applications with Silverlight - Prism 2.0

UI CompositionView Discovery Composition:

Less ComplexBlack Box ‘App Assembly’ CompositionSelect Views & Pull into Region

New InNew InPrism 2.0!

Prism 2.0!

RegionRegion

Region

Region

RegionRegion

<TabControl RegionManager.RegionName= "MainRegion">

regionManager. RegisterViewWithRegion( "MainRegion", typeof( MainView ) );

Page 16: Building Composite Applications with Silverlight - Prism 2.0

Commands and EventsDelegate & Composite Commands

Simplified Command HandlingEvent Aggregator

Loosely Coupled Pub/Sub Events

Module BCustomerPresenter

Module AOrder

Presenter

EventAggregator

Subscrib

e

Pub

lish

Event

Page 17: Building Composite Applications with Silverlight - Prism 2.0

Prism Silverlight Logical ArchitectureHOST APPLICATIONHOST APPLICATION LOADING

SERVICESLOADING SERVICES

CORE SERVICES

CORE SERVICES

MODULE PREFFERED SERVICES

MODULE PREFFERED SERVICES

ModulesModulesMODULESMODULES

PresenterPresenter

Model

ViewView

ModelModel

ModuleCatalog

Module Loader

EventAggregator

Logging

RegionManager

Un

ity

Module Initializer

Page 18: Building Composite Applications with Silverlight - Prism 2.0

Multi-TargetingUser Experiences

Desktop – In the Office, Full Functionality, Offline RIA – Out of the Office, Functional Subset, Online

WPFApplication

WPFApplication

Silverlight (RIA)Application

Silverlight (RIA)Application

CLR - SilverlightCLR - Silverlight CLR DesktopCLR Desktop

BCLBCL BCLBCL

BROWSER

DESKTOP

Page 19: Building Composite Applications with Silverlight - Prism 2.0

Multi-Targeting: StrategiesStart with LCDUse Links and Parallel Project StructuresSeparated Presentation StrategiesKeep single source If not, apply the sieve

#IF SILVERLIGHT#IF SILVERLIGHT

Partial ClassesPartial Classes

Partial MethodsPartial Methods

Separate ClassesSeparate Classes

Rewrite the CodeRewrite the Code

Page 20: Building Composite Applications with Silverlight - Prism 2.0

WP

FW

PF

CLR - SilverlightCLR - Silverlight CLR DesktopCLR Desktop

BCLBCL BCLBCL

BROWSER

DESKTOP

Multi-Targeting

Controllers

Models

Presenters

Views

Models

Controllers

Presenters

Views

Page 21: Building Composite Applications with Silverlight - Prism 2.0

Stock Trader RI

Page 22: Building Composite Applications with Silverlight - Prism 2.0

Where Can You Find It?www.microsoft.com/compositewpfwww.codeplex.com/compositewpfhttp://www.flyover18.com

Page 23: Building Composite Applications with Silverlight - Prism 2.0

Summary

PrismLibrary of Patterns for Composite Client

ApplicationsTargets WPF Desktop and Silverlight RIA

ApplicationsView Discovery Composition, Separated

Presentation Patterns, Module CatalogMulti-Targeting to reuse code between Silverlight

and WPFDownload from CodePlex and send us feedback

Page 24: Building Composite Applications with Silverlight - Prism 2.0

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,

it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.