6. MEF Project
Official Site http://mef.codeplex.com
Developer Microsoft
Started 26.08.2008
License MS Public License
(open source)
Last stable release MEF 1 / 12.04.2010
(included into .NET 4.0)
23. Creation Policy
Shared
Default
NonShared value
Any
Any & Any == Shared
Shared == Singleton
24. References to Parts
Container keeps reference to part if:
– Part is marked as Shared
– Part implements IDisposable
– One or more imports allow Recomposition
25. Disposing Composition Container
Dispose parts which implement IDisposable
Reference to parts will be cleaned up
Lazy exports won’t work
26. Catalog
Composition
Container
Compose
parts
Discover
parts
Catalog
27. Catalog Types
Assembly Catalog
Directory Catalog
Type Catalog
Aggregate Catalog
Deployment Catalog
(only for Silverlight)
28. Recomposition Support
Assembly Catalog
Directory Catalog Refresh()
Type Catalog
Aggregate Catalog auto
Deployment Catalog auto
31. MEF-based Dependency Injection
Service Locator
TPart Resolve<TPart>()
void Release<TPart>(TPart part) Common
Service Locator
Composition
Container MEF Adapter
32. MEF vs IoC
+ Ease of programming
+ Resolves dependencies between components
+ Automatic component discovery
+ Can compose types, fields, props and methods
- Slower than IoC containers
- Poor component lifetime management
- No component separation (separate appdomain, process)
33. Plugin-based Desktop Application
Most Useful Tool
Composition
Container Plugins Folder
Directory
Catalog
Refresh()
Track
File System Watcher
changes
34. Plugin-based Desktop Application
Allow parts recomposition
Assemblies shadow copy
! Plugin assembly
can not be unloaded in runtime
41. Composition Scoping Enhancements
Once Global Scope
Logger
Composition Container
Request Scope
Customer Controller
For each request Customer Repository
42. Composition Provider for ASP.NET MVC
Registering in composition container:
– Controllers
– Action filters
– Model binders
Constructor injection for controllers
47. Useful Sources
MEF Project (official site)
Managed Extensibility Framework Overview (msdn)
Building Composable Apps in .NET 4 with MEF (msdn)
BCL Team Blog (msdn)
Book of MEF (habrahabr)