managed extensibility framework (mef)
Post on 14-Dec-2014
2.393 Views
Preview:
DESCRIPTION
TRANSCRIPT
Managed Extensibility Framework (MEF)
1nn0vaLab
Managed Extensibility Framework (MEF)
1nn0vaLab
Managed Extensibility Framework (MEF)
1nn0vaLab
MEF è un framework che offrealle applicazioni la capacità diessere estese dinamicamente
attraverso componenti esterninoti solo a runtime
for modification
for extension
1nn0vaLab
part / component
Managed Extensibility Framework (MEF)
1nn0vaLab
Export itImport it
Compose it
Managed Extensibility Framework (MEF)
1nn0vaLab
Part A
Definiamo prima il servizio (part) da esporre
Utilizzare sempre le
interfacce per definire i contratti da esportare
Managed Extensibility Framework (MEF)
1nn0vaLab
Part A
Definiamo prima il servizio (part) da esporre
Dichiariamo l’implementazione da rendere disponibile ai consumer
Managed Extensibility Framework (MEF)
1nn0vaLab
Part A
Definiamo nel consumer il “punto di estensione”
Managed Extensibility Framework (MEF)
1nn0vaLab
Catalog
Dove cerca MEF le parti da utilizzare? TypeCatalog
DirectoryCatalog
AssemblyCatalog
AggregateCatalog
Managed Extensibility Framework (MEF)
1nn0vaLab
Dove cerca MEF le parti da utilizzare?
Come risolve i collegamenti import/export?
Container
It’s DEMOtime!
Managed Extensibility Framework (MEF)
1nn0vaLab
MEF architecture
Managed Extensibility Framework (MEF)
1nn0vaLab
Part by discovery
NO configuration
Wiring in the part
Almost pure POCO
Part by registration
External configuration,
via Fluent API or XML
Auto Wiring
Pure POCO
Managed Extensibility Framework (MEF)
1nn0vaLab
• Metadata support• Be “lazy”• Recomposition
Managed Extensibility Framework (MEF)
1nn0vaLab
Possiamo associare al servizioinformazioni aggiuntive (metadati) in modo da farle leggere ai consumer ...
... per esempio per filtrarele implementazioni daimportare
Managed Extensibility Framework (MEF)
1nn0vaLab
... per esempio per filtrarele implementazioni daimportare
Managed Extensibility Framework (MEF)
1nn0vaLab
Eseguire l’importazione solo nelmomento in cui viene utilizzata!
Lazy<T,M> (con M metadata) è utile per filtrare le importazioni in base aimetadati
Managed Extensibility Framework (MEF)
1nn0vaLab
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+
Managed Extensibility Framework (MEF)
1nn0vaLab
Dynamically loading XAPs with MEFhttp://channel9.msdn.com/Shows/SilverlightTV/Silverlight-TV-11-Dynamically-Loading-XAPs-with-MEF
Managed Extensibility Framework (MEF)
Resources
1nn0vaLab
Project hosting on codeplexhttp://mef.codeplex.com
Community-developed library ofextensionshttp://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/
CreditsLe immagini contenute in questa presentazione
eccetto la foto iniziale acquistata su
iStockPhoto hanno licenza Creative Commons
Thank You! MANUEL SCAPOLAN
website: www.manuelscapolan.it
twitter: manuelscapolan
e-mail: info@manuelscapolan.it
23
top related