managed extensibility framework (mef)

Post on 14-Dec-2014

2.393 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

MEF in Action: import, export e compose

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