Managed Extensibility Framework (MEF)

klucrab 1,653 views 23 slides Feb 26, 2011
Slide 1
Slide 1 of 23
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23

About This Presentation

MEF in Action: import, export e compose


Slide Content

ManagedExtensibilityFramework(MEF)
1nn0vaLab

ManagedExtensibilityFramework(MEF)
1nn0vaLab

ManagedExtensibilityFramework(MEF)
1nn0vaLab
MEF è un framework cheoffre
alleapplicazionila capacitàdi
essereestesedinamicamente
attraversocomponentiesterni
notisolo a runtime

formodification
forextension
1nn0vaLab
part / component

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Exportit
Importit
Composeit

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Part A
Definiamo prima il
servizio (part) da esporre
Utilizzare sempre le
interfacce per definire i
contratti da esportare

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Part A
Definiamo prima il
servizio (part) da esporre
Dichiariamo
l’implementazione da
rendere disponibileai
consumer

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Part A
Definiamo nel
consumer il “punto
di estensione”

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Catalog
Dove cerca MEF le
parti da utilizzare? TypeCatalog
DirectoryCatalog
AssemblyCatalog
AggregateCatalog

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Dove cerca MEF le
parti da utilizzare?
Come risolve i collegamenti
import/export?
Container

It’s DEMO
time!

ManagedExtensibilityFramework(MEF)
1nn0vaLab
MEF architecture

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Part bydiscovery
NO configuration
Wiringin the part
Almostpure POCO
Part byregistration
Externalconfiguration,
via FluentAPI or XML
Auto Wiring
Pure POCO

ManagedExtensibilityFramework(MEF)
1nn0vaLab
•Metadata support
•Be “lazy”
•Recomposition

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Possiamoassociareal servizio
informazioniaggiuntive(metadati) in
mododafarleleggereaiconsumer ...
... per esempioper filtrare
le implementazionida
importare

ManagedExtensibilityFramework(MEF)
1nn0vaLab
... per esempioper filtrare
le implementazionida
importare

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Eseguirel’importazionesolo nel
momentoin cui vieneutilizzata!
Lazy<T,M> (con M metadata) è utile
per filtrarele importazioniin base ai
metadati

ManagedExtensibilityFramework(MEF)
1nn0vaLab
Con MEF possiamoaverela
ricomposizioneautomaticadellepartiin
casodiaggiuntadinuoveestensioni
(o rimozionediunaesistente)
[ImportMany(AllowRecomposition(true)]
IPartImportsSatisfiedNotification
+

ManagedExtensibilityFramework(MEF)
1nn0vaLab
DynamicallyloadingXAPswithMEF
http://channel9.msdn.com/Shows/SilverlightTV/Silverlight
-TV-11-Dynamically-Loading-XAPs-with-MEF

ManagedExtensibilityFramework(MEF)
Resources
1nn0vaLab
Project hosting on codeplex
http://mef.codeplex.com
Community-developedlibraryof
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/

Slide 2 : http://www.flickr.com/photos/69691418@N00/4368951793/
Slide 3 : http://www.flickr.com/photos/16013376@N00/4562002778/
Credits
Le immagini contenute in questa presentazione
eccetto la foto iniziale acquistata su
iStockPhotohanno licenza Creative Commons

ThankYou!
MANUEL SCAPOLAN
website: www.manuelscapolan.it
twitter: manuelscapolan
e-mail: [email protected]
23