Pergunta

Que problemas faz MEF (Managed Extensibility Framework) resolve que não podem ser resolvidos por contêineres IoC / DI existente?

Foi útil?

Solução

A função principal de um MEF é extensibilidade; para servir como um 'plug-in' framework para quando o autor do aplicativo e o autor do plug-in ( extensão ) são diferentes e não têm conhecimento particular do outro além de uma interface publicada ( contrato ) biblioteca.

Outra endereços espaciais problema MEF que é diferente dos suspeitos do costume COI e um dos MEFs pontos fortes, é [extensão] descoberta. Tem um monte de, bem, mecanismos de descoberta extensíveis que operam em metadados que você pode associar com extensões. Do site da MEF CodePlex:

"MEF permite marcação extensões com metadados additonal o que facilita a consulta ricos e filtrando"

Combinado com uma capacidade de atraso de carga marcado extensões, sendo capaz de metadados extensão interrogar antes para carregamento abre a porta para uma série de cenários interessantes e permite substancialmente capacidades, tais como [plug-in] versionamento.

MEF também tem 'Adaptadores contrato' que permitem extensões para ser 'adaptado' ou 'transformado' ( do tipo> para digitar ) com controle completo sobre os detalhes dessas transformações. Adaptadores Contrato abrir outra frente em relação criativa para apenas o que significa e implica 'descoberta'.

Mais uma vez, MEFs 'intenção' está fortemente focada em plug-in extensibilidade anônimo, algo muito isso o diferencia de outros recipientes COI. Assim, enquanto MEF pode ser utilizado para a composição, que é apenas uma pequena intersecção das suas capacidades em relação a outros IOCs, com os quais eu suspeito que vamos ver um monte de interação incestuosa daqui para frente.

Outras dicas

recipientes de IoC concentrar-se nas coisas que você sabe ou seja, eu sei que vou usar um registrador em um teste de unidade, e uma Logger diferente em meu aplicativo. MEF incide sobre aquelas coisas que você não, há 1 a n madeireiros que podem aparecer no meu sistema.

Scott Hanselman e eu cobri este tópico com mais detalhes nas Hanselminutes recentes.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top