Managed Extensibility Framework
DeveloperMicrosoft
Stable release
V1 in .NET Framework 4.0 / April 12, 2010; 16 years ago (2010-04-12)
Preview release
V2 Preview 5 / December 19, 2011; 14 years ago (2011-12-19)
Written inC#
Operating systemWindows
Platform.NET Framework
TypeWeb application framework
LicenseMIT License[1]
Websitedocs.microsoft.com/en-us/dotnet/framework/mef/
Repositorygithub.com/MicrosoftArchive/mef

Managed Extensibility Framework (MEF) is a component of .NET Framework 4.0 aiming to create lightweight, extensible applications. It aims to allow .NET application developers to discover and use extensions with no configuration required. It also aims to let extension developers encapsulate code easily and avoid fragile hard dependencies. Furthermore, it aims to allow extensions to be reused across applications.[2] MEF was introduced as a part of .NET 4.0[3] and Silverlight 4. It was later improved with the release of .NET 4.5 by adding support for generic types and the introduction of a convention-based extension model.[4]

Overview

edit

MEF aims to solve the runtime extensibility problem. Without MEF, any application that wants to support a plugin model needs to create its own infrastructure from scratch. Those plugins will often be application-specific and cannot be reused across multiple implementations.

  • MEF aims to provide a standard way for the host application to expose itself and consume external extensions. Extensions, by their nature, could be reused amongst different applications. However, an extension can still be implemented in a way that is application-specific. Extensions themselves can depend on one another and MEF aims to make sure they are wired together in the correct order, sparing the developer from doing it manually.
  • MEF offers a set of discovery approaches for the application to locate and load available extensions.
  • MEF allows tagging extensions with additional metadata which aims to facilitate rich querying and filtering.

Design

edit

Roughly speaking, MEF's core consists of a catalog and a CompositionContainer. A catalog is responsible for discovering extensions and the container coordinates creation and satisfies dependencies.

  • MEF's first-class citizen is the ComposablePart class. A composable part offers up one or more Exports, and may also depend on one or more externally provided services or Imports. A composable part also manages an instance, which can be an object instance of a given type (it is in the default MEF implementation)[clarification needed]. MEF, however, is extensible and additional ComposablePart implementations can be provided as long as they adhere to the Import/Export contracts.
  • Exports and imports each have a Contract. Contracts are the bridge between exports and imports. An export contract can consist of further metadata that can be used to filter on its discovery. For example, it might indicate a specific capability that the export offers.
  • MEF's container interacts with Catalogs to have access to composable parts. The container itself resolves a part's dependencies and exposes Exports to the outside world. Composable part instances may be added directly to the container.
  • A ComposablePart returned by a catalog will likely be an extension to the application. It might have Imports (dependencies) on components the host application offers, and it's likely to Export others.
  • The default MEF composable part implementation uses attribute-based metadata to declare exports and imports. This allows MEF to determine which parts, imports, and exports are available through discovery.

References

edit
  1. ^ "MEF". GitHub. 15 October 2021.
  2. ^ Kanjilal, Joydip (7 July 2016). "How to work with the Managed Extensibility Framework in C#". InfoWorld. Retrieved 25 June 2022.
  3. ^ Pronschinske, Mitch (12 April 2010). "What's New in VS2010 and .Net 4?". DZone. Retrieved 25 June 2022.
  4. ^ Vogel, Eric (12 February 2010). "Managed Extensibility Framework Improvements in .NET 4.5". VisualStudio Magazine. Retrieved 25 June 2022.

Further reading

edit
  • Likness, Jeremy (2011). Fundamentals of the Managed Extensibility Framework (MEF). Addison-Wesley. ISBN 978-0132929400.
  • Verma, Rishabh (2020). Visual Studio Extensibility Development: Extending Visual Studio IDE for Productivity, Quality, Tooling, and Analysis. Apress. ISBN 978-1484258538.
  • Harris, Alan (2010). Pro ASP.NET 4 CMS: Advanced Techniques for C# Developers Using the .NET 4 Framework. 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.
edit

📚 Artikel Terkait di Wikipedia

.NET Framework version history

implementing futures and promises. The Managed Extensibility Framework or MEF is a library for creating lightweight, extensible applications. It allows application

Visual Studio

the internals have been redesigned using Managed Extensibility Framework (MEF) that offers more extensibility points than previous versions of the IDE

.NET Foundation

steward of 556 active projects, including: .NET, Entity Framework (EF), Managed Extensibility Framework (MEF), MSBuild, NuGet, Orchard CMS and WorldWide Telescope

Dependency injection

com, October 2006 Archived 2008-03-11 at the Wayback Machine Managed Extensibility Framework Overview -- MSDN Old fashioned description of the Dependency

Mpv (media player)

with a customizable Windows context menu, C# scripting, and a Managed Extensibility Framework (MEF) for addons. OvoPlayer - Linux and Windows music player

Spring Framework

Spring Framework, Spring Security and Spring Web Flow. Roo differs from other rapid application development frameworks by focusing on: Extensibility (via

SharePoint

is also available. The Microsoft Power Platform provides significant extensibility for SharePoint Online, especially Power Automate. Microsoft Graph provides

UEFI

is managed by an industry consortium. Most production firmware implementations for both remain proprietary. Intel developed the original Extensible Firmware