A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK [email protected] mtaulty.com...
-
Upload
sabrina-pascoe -
Category
Documents
-
view
216 -
download
1
Transcript of A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK [email protected] mtaulty.com...
![Page 1: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/1.jpg)
a guided tour of MEFin Silverlight 4
Mike Taulty
Microsoft UK
mtaulty.com
@mtaulty
![Page 2: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/8.jpg)
demomatching imports to exports
![Page 9: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/14.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/17.jpg)
demostable composition
![Page 18: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/18.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/19.jpg)
demoMEF and MVVM
![Page 20: A guided tour of MEF in Silverlight 4 Mike Taulty Microsoft UK mtaulty@microsoft.com mtaulty.com @mtaulty.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/20.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/21.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/23.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062621/551c58d3550346a5458b50e8/html5/thumbnails/24.jpg)
thanks for coming
feedback