Download presentation
Presentation is loading. Please wait.
1
Building Modular Silverlight Applications with the Managed Extensibility Framework Ben Dewey twentysix New York http://www.bendewey.com/blog http://twitter.com/bendewey
2
We thank the following companies for their gracious sponsorship Platinum Sponsors Gold Sponsor
3
Assumptions Basic knowledge of – Silverlight – Model-View-ViewModel Nice to have knowledge of – Loosely Coupled Application Architecture – Inversion of Control Containers
4
Overview What is the Managed Extensibility Framework MEF Basics – Export, Import, Compose Describing your exports with Metadata Loading Packages Dynamically Questions
5
Preface Loosely Couple Architecture – Extract functionality to Interfaces Inversion of Control Containers – Dependency Injection IPlugin obj = new MyPlugin(); IPlugin obj = IoC.Resolve ();
6
What is MEF MEF is the Managed Extensibility Framework – Create based on the needs of the VS2010 team – MEF Preview 9 for SL3 and In the Box for SL4 Why would you want to use it? – Loosely Coupled Application – Plugin Architecture – Limit initial XAP download time.
7
MEF Basics Export Import Compose – Populates the entire object graph CompositionInitializer.SatisfyImports(this); [Import] public IPlugin Plugin { get; set; } [Export(typeof(IPlugin))] public class MyPlugin : IPlugin { } [ImportMany] public IEnumerable Plugin { get; set; }
8
Describing your Exports with Metadata Use the ExportMetadataAttribute (0-many) Binds using the Lazy object to a strongly typed interface [Export(typeof(IPlugin))] [ExportMetadata(“Order”, 1)] public class MyPlugin : IPlugin { } public interface IPluginMetadata { int Order { get; set; } }
9
Recomposition Imports get set whenever new Exports become available [ImportMany(AllowRecomposition=true)] public IEnumerable Shapes { get; set; }
10
Loading Packages Dynamically DeploymentCatalog, DeploymentCatalogService *DeploymentCatalogService is not included in System.ComponentModel.Composition, comes with the DeploymentCatalogSample Sample application DeploymentCatalogService.AddXap("MefHolidayShapes.xap"); var catalog = new DeploymentCatalog("MefHolidayShapes.xap"); catalog.DownloadCompleted += catalog_DownloadCompleted; catalog.DownloadAsync();
11
Links http://mef.codeplex.com http://microsoftpdc.com/Sessions/FT24 – Building Extensible Rich Internet Applications with the Managed Extensibility Framework (Glenn Block) http://channel9.msdn.com/shows/SilverlightTV/
12
New York City Spring 2010 http://www.agilefirestarter.com twitter: @agilefireSaturday March 27, 2010
13
Thank You
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.