4. Managed Extensibility Framework (MEF)
MEF 竪 un framework che offre
alle applicazioni la capacit di
essere estese dinamicamente
attraverso componenti esterni
noti solo a runtime
1nn0vaLab
5. for extension
part / component
for modification
1nn0vaLab
7. Managed Extensibility Framework (MEF)
Definiamo prima il
servizio (part) da esporre
Utilizzare sempre le
interfacce per definire i
contratti da esportare
Part A
1nn0vaLab
8. Managed Extensibility Framework (MEF)
Definiamo prima il
servizio (part) da esporre
Dichiariamo
limplementazione da
rendere disponibile ai
consumer
Part A
1nn0vaLab
10. Managed Extensibility Framework (MEF)
Dove cerca MEF le
parti da utilizzare? TypeCatalog
AssemblyCatalog
Catalog
DirectoryCatalog
AggregateCatalog
1nn0vaLab
11. Managed Extensibility Framework (MEF)
Come risolve i collegamenti
import/export?
Dove cerca MEF le
parti da utilizzare?
Container
1nn0vaLab
14. Managed Extensibility Framework (MEF)
Part by discovery Part by registration
External configuration,
NO configuration
via Fluent API or XML
Wiring in the part Auto Wiring
Almost pure POCO Pure POCO
1nn0vaLab
16. Managed Extensibility Framework (MEF)
Possiamo associare al servizio
informazioni aggiuntive (metadati) in
modo da farle leggere ai consumer ...
... per esempio per filtrare
le implementazioni da
importare
1nn0vaLab
18. Managed Extensibility Framework (MEF)
Eseguire limportazione solo nel
momento in cui viene utilizzata!
Lazy<T,M> (con M metadata) 竪 utile
per filtrare le importazioni in base ai
metadati
1nn0vaLab
19. Managed Extensibility Framework (MEF)
Con MEF possiamo avere la
ricomposizione automatica delle parti in
caso di aggiunta di nuove estensioni
(o rimozione di una esistente)
[ImportMany(AllowRecomposition(true)]
+
IPartImportsSatisfiedNotification
1nn0vaLab
21. Managed Extensibility Framework (MEF)
Resources
Project hosting on codeplex
http://mef.codeplex.com
Community-developed library of
extensions
http://mefcontrib.codeplex.com/
Hamilton Verissimo (the MEF man)
http://blogs.msdn.com/b/hammett/
Glenn Block (the MEF maniac)
http://codebetter.com/glennblock/
1nn0vaLab
22. Credits
Le immagini contenute in questa presentazione
eccetto la foto iniziale acquistata su
iStockPhoto hanno licenza Creative Commons
際際滷 2 : http://www.flickr.com/photos/69691418@N00/4368951793/
際際滷 3 : http://www.flickr.com/photos/16013376@N00/4562002778/