.net - net - ¿Por qué exactamente no es MEF un contenedor DI/IoC?
mvc dependency injection (2)
Se ha dicho en la blogósfera y por los mismos Microsoft que MEF no es otro contenedor IoC.
¿Está bien, pero por qué? Me parece lo mismo. Tal vez no sea tan bueno como Unity o Castle Windsor , pero todavía se ajusta a la definición, ¿no?
¿Por qué MEF no es un contenedor de IoC como Unity o Castle Windsor?
En mi mundo, DI se basa en tres dimensiones, composición de objetos, gestión de vida e intercepción. Esto es lo que facilita otros contenedores DI completos, como Unity, Castle Windsor y Ninject. MEF solo admite una dimensión, Composición del objeto. Está haciendo esto bastante bien, pero las dos dimensiones restantes no son compatibles con MEF.
MEF tiene potencial , pero como contenedor DI, carece de:
- Código como configuración
- Registro automático
- Configuración XML (no tan importante para mí)
- Tiempos de vida personalizados
- Interceptación
Esas cosas son bastante importantes.
Para el estilo de vida le falta:
- Por gráfico
- Contexto de solicitud web
- Contexto del hilo
- Contexto de la sesión
- Agrupado
- Alcance
- Referencia personalizada
Referencias: - El libro de Mark Seemann "Dependency Injection in .NET"