a guided tour of mef in silverlight 4 mike taulty microsoft uk [email protected] mtaulty.com...

24
a guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK [email protected] mtaulty.com @mtaulty

Upload: sabrina-pascoe

Post on 02-Apr-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

a guided tour of MEFin Silverlight 4

Mike Taulty

Microsoft UK

[email protected]

mtaulty.com

@mtaulty

Page 2: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

MEF – What is it? How and when do I get it?

• the Managed Extensibility Framework• an extensible framework for composing applications from a set of loosely-coupled parts discovered and evolving at run-time

• versions• .NET Framework shipping with Silverlight 4 • .NET Framework 4 shipping with VS 2010• CodePlex version for Silverlight 3, .NET 3.5 Sp1

Page 3: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

IAlbumArtProvider

IAlbumInfoProvider

“scenario”

MediaPlayer

AlbumInfoProvider

AlbumArtProvider

GetAlbumInfo(“Blood on the Tracks”)

GetAlbumArt(“Blood on the Tracks”)

Constructor()

Constructor()

Page 4: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demousing MEF in our scenario

Page 5: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

MEF models composable parts

Partexportexport

importimportimport

Page 6: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

MEF composes parts

part

export

export

import

importimport

partimportimportimport

partexport

import

part

expo

rt

impo

rt

impo

rt

Composition Engine

Compose part

part

part

part

part

Page 7: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

which parts compose together?

partexportexport

importimportimport

partimport

?Contract

Name

Cardinality

Shared

Recomposable

Metadata

Contract

Name

Shared

Metadata

Page 8: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demomatching imports to exports

Page 9: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

parts & part definitions

•PartDefinition is a blueprint for a Part• similar to Object and Type in .NET• but can have Part without PartDefinition

Partexportexport

importimportimportPartDefinitio

n

export

import

CreatePart()

Page 10: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

container draws parts from catalogs

CompositionContainer

Catalog

Catalog Catalog Catalog

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

PartDefinition

Page 11: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

or mix in pre-instantiated parts

CompositionContainer

partExports(“Foo”)

Compose()

partImports(“Foo”)

Page 12: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demothe built-in catalogs*( *one is missing – we’ll come back to it later )

Page 13: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

things change - recomposition

CompositionContainer

Catalog Catalog

PartDefinition

PartDefinition

PartDefinition

part

Compose()

partpart

PartDefinition

Some catalogs support additions

New parts [introduced to/removed from] container may have an impact on this import – a part can opt-in to allow this recomposition

part?

Page 14: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

recomposition is key for Silverlight

MyApp.xap

initial, small download

Extras.xapadditional functionality

Page 15: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demorecomposition & the DeploymentCatalog( completing our story of built-in catalogs )

Page 16: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

CompositionContainer

stable composition

reject parts with unsatisfied

imports

part

part

requires

requires

missing

reject changes that break “agreements”

part

part

requires exactlyone part

part

different part,same contract

Page 17: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demostable composition

Page 18: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

MEF and Model View ViewModel• Strong separation of concerns possible with Silverlight development• user interface declared in XAML• loosely binds to data• functionality invoked by declarative commands

• Encapsulated by the “MVVM” pattern

model(“data”)

viewmodel(state & data for

view)

view(declarative XAML)

commands

binding

Page 19: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

demoMEF and MVVM

Page 20: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

Pointers to more advanced topics

Page 21: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

extensibility – catalogs & export providers

CompositionContainer

ExportProvider

ExportProvider...CompositionContainer

ComposablePartCatalog

Catalog

ExportProvider

CatalogExportProvider

ExportProvider

AggregateExportProvider

ExportProvider

CatalogExportProvider

Page 22: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

MEF Primitives

extensibility – programming models

• Programming models in MEF are pluggable

• [Attribute] is the built-in model

• Custom models involve implementing some/all of MEF’s primitive classes

ComposablePartCatalogComposablePartDefinition

ComposablePart

ExportDefinition

ImportDefinition

Page 23: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

resources

•Channel 9 Silverlight 4 MEF Screencasts•channel9.msdn.com/tags/learnMEFSL4

•Glenn Block•blogs.msdn.com/gblock

•Nicholas Blumhardt•blogs.msdn.com/nblumhardt

•MEF on CodePlex•mef.codeplex.com

Page 24: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty

thanks for coming

feedback