Managed Extensibility Framework ( MEF ) es un componente de .NET Framework 4.0 que busca crear aplicaciones ligeras y extensibles. Su objetivo es permitir que los desarrolladores de aplicaciones .NET descubran y utilicen extensiones sin necesidad de configuración. También busca que los desarrolladores de extensiones encapsulen código fácilmente y eviten dependencias rígidas y frágiles. Además, busca permitir que las extensiones se reutilicen en diferentes aplicaciones. [ 2 ] MEF se introdujo como parte de .NET 4.0 [ 3 ] y Silverlight 4. Posteriormente se mejoró con el lanzamiento de .NET 4.5 al agregar soporte para tipos genéricos y la introducción de un modelo de extensión basado en convenciones. [ 4 ]
Descripción general
MEF busca solucionar el problema de la extensibilidad en tiempo de ejecución. Sin MEF, cualquier aplicación que desee admitir un modelo de complementos debe crear su propia infraestructura desde cero. Estos complementos suelen ser específicos de la aplicación y no se pueden reutilizar en múltiples implementaciones.
- MEF tiene como objetivo proporcionar una forma estándar para que la aplicación anfitriona se exponga y consuma extensiones externas. Por su naturaleza, las extensiones pueden reutilizarse entre diferentes aplicaciones. Sin embargo, una extensión puede implementarse de forma específica para cada aplicación. Las extensiones pueden depender unas de otras, y MEF busca garantizar que se conecten correctamente, evitando que el desarrollador tenga que hacerlo manualmente.
- MEF ofrece un conjunto de métodos de descubrimiento para que la aplicación localice y cargue las extensiones disponibles.
- MEF permite etiquetar extensiones con metadatos adicionales, con el objetivo de facilitar consultas y filtrados más completos.
Diseño
En términos generales, el núcleo de MEF consta de un catálogo y un CompositionContainer. El catálogo se encarga de descubrir las extensiones, mientras que el contenedor coordina su creación y satisface las dependencias.
- La clase ComposablePart es un elemento fundamental de MEF. Una parte componible ofrece una o más Exportaciones y puede depender de uno o más servicios o Importaciones externos. Además, gestiona una instancia, que puede ser una instancia de objeto de un tipo determinado (como se muestra en la implementación predeterminada de MEF) . Sin embargo, MEF es extensible y se pueden proporcionar implementaciones adicionales de ComposablePart siempre que cumplan con los contratos de Importación/Exportación.
- Tanto las exportaciones como las importaciones tienen un contrato. Los contratos son el vínculo entre las exportaciones y las importaciones. Un contrato de exportación puede incluir metadatos adicionales que permiten filtrar la información para su búsqueda. Por ejemplo, podría indicar una capacidad específica que ofrece la exportación.
- El contenedor de MEF interactúa con los catálogos para acceder a las partes componibles. El propio contenedor resuelve las dependencias de una parte y expone las exportaciones al exterior. Las instancias de partes componibles se pueden agregar directamente al contenedor.
- Un ComposablePart devuelto por un catálogo probablemente será una extensión de la aplicación. Podría tener importaciones (dependencias) de componentes que ofrece la aplicación anfitriona, y es probable que exporte otros.
- La implementación predeterminada de las partes componibles de MEF utiliza metadatos basados en atributos para declarar exportaciones e importaciones. Esto permite a MEF determinar qué partes, importaciones y exportaciones están disponibles mediante el descubrimiento.
Referencias
- ↑ "MEF" . GitHub . 15 de octubre de 2021.
- ↑ Kanjilal, Joydip (7 de julio de 2016). "Cómo trabajar con el Managed Extensibility Framework en C#" . InfoWorld . Consultado el 25 de junio de 2022 .
- ↑ Pronschinske, Mitch (12 de abril de 2010). "¿Qué hay de nuevo en VS2010 y .Net 4?" . DZone . Consultado el 25 de junio de 2022 .
- ↑ Vogel, Eric (12 de febrero de 2010). "Mejoras del marco de extensibilidad administrada en .NET 4.5" . VisualStudio Magazine . Consultado el 25 de junio de 2022 .
Lecturas adicionales
- Likness, Jeremy (2011). Fundamentos del marco de extensibilidad gestionada (MEF) . Addison-Wesley. ISBN 978-0132929400.
- Verma, Rishabh (2020). Desarrollo de extensibilidad de Visual Studio: Ampliando el IDE de Visual Studio para productividad, calidad, herramientas y análisis . Apress. ISBN 978-1484258538.
- Harris, Alan (2010). Pro ASP.NET 4 CMS: Técnicas avanzadas para desarrolladores de C# que utilizan el framework .NET 4. Apress. ISBN 978-1430227137.
- Nagel, Christian; Evjen, Bill; Glynn, Jay; Watson, Karli; Skinner, Morgan (2010). Professional C# 4.0 and .NET 4. John Wiley & Sons. ISBN 978-0470632536.
Enlaces externos
- mef en GitHub
- Descripción general del marco de extensibilidad gestionada
- Creación de aplicaciones componibles en .NET 4 con el Managed Extensibility Framework.
- Introducción sencilla a MEF - Primera parte
- Terminología de .NET Framework
- Bibliotecas de C#
- Software gratuito de Microsoft
- Software que utiliza la licencia MIT.
- Software de 2010
- Software gratuito exclusivo para Windows