Scott Hanselman ayudó a resaltar las características específicas de MEF en su podcast 148 con Glenn Block.
En comparación con OSGi, MEF se basa en "Inversión de control" y OSGi no lo es: (OSGi) descubrirá nuevo paquete a través de un mecanismo diferente basado en una capa de ciclo de vida.
MEF se centra en la extensibilidad de la aplicación. Utiliza DI como una estrategia para componer las diferentes extensiones, , sin embargo, no es en sí un contenedor DI genérico.
Desde el último punto puede ser confuso, el transcripts del podcast puede ayudar:
La forma en que, básicamente, posición que, sin embargo, la diferencia entre los dos, es que los contenedores IoC son realmente acerca de la gestión a conocido conjunto de cosas en diferentes entornos, como quiero un registrador en el entorno de mi disco, quiero un registrador simulado en mi entorno de prueba.
Así MEF es realmente acerca de la gestión de un desconocida conjunto de las cosas y lo que se reduce a es que en un contenedor IoC que tienden a hacer bien una basada en la convención o un registro, mecanismo de registro específico, a decir aquí es lo logger significa, esto es lo que esto significa, esto es lo que eso significa.
MEF usa el código y un mecanismo de descubrimiento y anotaciones en el código, que son atributos , donde lo que aparece en el sistema, eso es lo que hay allí.
Así que de nuevo, llevándolo a un nivel más alto, se trata de utilizar el MEF para gestionar realmente un conjunto de desconocidos cosas, se utiliza IoC contenedores para gestionar un conjunto de conocidos cosas.
Conclusión: (uno de) la principal diferencia es el principio descubrimiento (COI vs. ciclo de vida)
Has aceptado la respuesta menos representativa. Sin saber nada sobre MEF, no puedo comparar los dos, pero puedo confirmar con firmeza que IoC NO es un problema para OSGi, por lo que no puede usarse como una característica distintiva. Por cierto, ¿qué terminaste eligiendo para tu proyecto? – drozzy