.net - publica - mef siaf
¿Es MEF OSGi para.NET? (3)
Acabo de tropezar con esto, pero Prism parece ser lo más parecido a OSGi en .NET que he visto. Mire su sección Desarrollo de aplicaciones modulares en los documentos.
Solo mire su ejemplo de las dependencias de los módulos (¡casi equivalentes a los paquetes!):
<modules>
<module assemblyFile="Modules/ModuleD.dll" moduleType="ModuleD.ModuleD, ModuleD" moduleName="ModuleD">
<dependencies>
<dependency moduleName="ModuleB"/>
</dependencies>
</module>
Parece que en Microsoft, el equipo de Patterns & Practices funciona como una especie de equivalente de OSGi Alliance.
Solo estoy tratando de entender el Marco de Extensibilidad Administrado ( MEF ) en este momento y profundizar un poco. Tengo un fondo de Eclipse, así que en mi cerebro actualmente tengo la ecuación:
MEF =~ OSGi for .NET
Basado en lo que he escuchado hasta ahora. ¿Estoy en las líneas correctas?
Scott Hanselman ayudó a destacar los detalles sobre 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 .
Dado que el último punto puede ser confuso, las transcripts del podcast pueden ayudar:
Sin embargo, la forma en que básicamente lo posiciono, la diferencia entre los dos, es que los contenedores IoC realmente se trata de administrar un conjunto conocido de cosas en diferentes entornos, como quiero un registrador en el entorno de mi disco, quiero un registrador simulado en mi entorno de prueba .
Entonces, MEF realmente trata de manejar un conjunto desconocido de cosas y lo que eso se reduce a eso es que en un Contenedor de IOC Tiendo a hacer un registro específico o un mecanismo de registro específico para decir que esto es lo que significa el registrador, esto es lo que 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í.
Entonces, de nuevo, llevándolo a un nivel superior, se trata de que use MEF para administrar realmente un conjunto de cosas desconocidas , use Contenedores IoC para administrar un conjunto de cosas conocidas .
Conclusión: (uno de) la principal diferencia es el principio de descubrimiento (IoC vs. ciclo de vida)
Tenga en cuenta que OSGi está diseñado para que un contenedor IoC se pueda proporcionar como módulo, de hecho, hay varios contenedores IoC para OSGi disponibles, así como otros mecanismos: DS, iPOJO, Blueprint e indudablemente otros.