managed extensibility framework (mef)

23

Upload: manuel-scapolan

Post on 14-Dec-2014

2.393 views

Category:

Technology


1 download

DESCRIPTION

MEF in Action: import, export e compose

TRANSCRIPT

Page 1: Managed Extensibility Framework (MEF)
Page 2: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Page 3: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Page 4: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

MEF è un framework che offrealle applicazioni la capacità diessere estese dinamicamente

attraverso componenti esterninoti solo a runtime

Page 5: Managed Extensibility Framework (MEF)

for modification

for extension

1nn0vaLab

part / component

Page 6: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Export itImport it

Compose it

Page 7: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Part A

Definiamo prima il servizio (part) da esporre

Utilizzare sempre le

interfacce per definire i contratti da esportare

Page 8: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Part A

Definiamo prima il servizio (part) da esporre

Dichiariamo l’implementazione da rendere disponibile ai consumer

Page 9: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Part A

Definiamo nel consumer il “punto di estensione”

Page 10: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Catalog

Dove cerca MEF le parti da utilizzare? TypeCatalog

DirectoryCatalog

AssemblyCatalog

AggregateCatalog

Page 11: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Dove cerca MEF le parti da utilizzare?

Come risolve i collegamenti import/export?

Container

Page 12: Managed Extensibility Framework (MEF)

It’s DEMOtime!

Page 13: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

MEF architecture

Page 14: Managed Extensibility Framework (MEF)

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

Page 15: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

• Metadata support• Be “lazy”• Recomposition

Page 16: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Possiamo associare al servizioinformazioni aggiuntive (metadati) in modo da farle leggere ai consumer ...

... per esempio per filtrarele implementazioni daimportare

Page 17: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

... per esempio per filtrarele implementazioni daimportare

Page 18: Managed Extensibility Framework (MEF)

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

Page 19: Managed Extensibility Framework (MEF)

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+

Page 20: Managed Extensibility Framework (MEF)

Managed Extensibility Framework (MEF)

1nn0vaLab

Dynamically loading XAPs with MEFhttp://channel9.msdn.com/Shows/SilverlightTV/Silverlight-TV-11-Dynamically-Loading-XAPs-with-MEF

Page 21: Managed Extensibility Framework (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/

Page 22: Managed Extensibility Framework (MEF)

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

Page 23: Managed Extensibility Framework (MEF)

Thank You! MANUEL SCAPOLAN

website: www.manuelscapolan.it

twitter: manuelscapolan

e-mail: [email protected]

23