Domanda

Quali problemi risolve MEF (Managed Extensibility Framework) che non possono essere risolti dai contenitori IoC / DI esistenti?

È stato utile?

Soluzione

Lo scopo principale di MEF è l'estensibilità; fungere da framework di "plug-in" quando l'autore dell'applicazione e l'autore del plug-in ( estensione ) sono diversi e non si conoscono in modo particolare al di fuori di un'interfaccia pubblicata ( libreria contratto ).

Un altro spazio problematico che MEF affronta è diverso dai soliti sospetti IoC e uno dei punti di forza di MEF è la scoperta [estensione]. Ha molti meccanismi di scoperta estensibili che operano su metadati che è possibile associare alle estensioni. Dal sito MEF CodePlex:

" MEF consente di taggare le estensioni con metadati addizionali che facilitano l'interrogazione e il filtraggio avanzati "

Unito alla capacità di ritardare il caricamento delle estensioni con tag, la possibilità di interrogare i metadati delle estensioni precedenti al caricamento apre le porte a una serie di scenari interessanti e abilita sostanzialmente funzionalità come [plug-in] controllo delle versioni.

MEF ha anche "Adattatori di contratto" che consentono alle estensioni di essere "adattate" o "trasformate" ( dal tipo > al tipo ) con il controllo completo sui dettagli di tali trasformazioni. Gli adattatori di contratto aprono un altro fronte creativo relativamente a ciò che significa "scoperta" e implica.

Ancora una volta, l '"intento" di MEF è strettamente focalizzato sull'estensibilità anonima del plug-in, qualcosa che lo differenzia molto dagli altri contenitori IoC. Quindi, mentre MEF può essere usato per la composizione, è solo una piccola intersezione delle sue capacità rispetto ad altri IoC, con il quale sospetto che vedremo un sacco di giochi incestuosi andare avanti.

Altri suggerimenti

I contenitori IoC si concentrano su ciò che sai, cioè so che userò un logger in un Unit Test e un Logger diverso nella mia app. MEF si concentra su quelle cose che non fai, ci sono da 1 a n logger che possono apparire nel mio sistema.

Scott Hanselman e io abbiamo trattato questo argomento in modo più dettagliato nei recenti hanselminutes.

http://www.hanselminutes.com/default.aspx?showID=166

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top