Managed Extensible Framework

Posted: September 4, 2011 in Dotnet basics

Introduction to MEF

What is MEF?

MEF stands for Managed Extensible Framework. It is part of Dotnet 4.0 and is useful for building extensible applications. It can be used to plug-in components to already existing application. It is useful as it decouples the components and also it has mechanism to discover components and thus avoid dependencies. MEF enables developers to create extensions dynamically, without the extending application or the extension requiring any specific knowledge of the other

Basic of MEF :

  • Composition : This is the process of assembling of several different objects into one.
  •  ComposableParts : The key building blocks of MEF. ComposableParts enable applications to expose and consume component extensions via Exports and Imports.
  • Contracts : The avenue for communication between Export and Import components. A Contractis normally implemented via an Interface class.
  • Import and Export : Import and Export attributes can be thought of in the same aspect as a supplier and consumer respectively. Export components supply some value; Import components consume that value.
  • ImportMany :  It loads all the components that match the given contract as a collection.
  • Composition Container – Core of MEF. In order to discover the parts available to it, the composition containers makes use of a catalog
  • Catalog : A catalog is an object that makes available parts discovered from some source. MEF provides catalogs to discover parts from a provided type, an assembly, or a directory.


Different types of Catalog are :

  • Assembly Catalog: Discovers the different parts on a specific assembly.
  • Directory Catalog: Discovers parts inside the assemblies on a specific directory.
  • Aggregate Catalog: Allows use more than one catalog combining them.
  • Type Catalog: Looks inside the assemblies for specific types.

Why MEF :

  • Loosely coupled architecture – no need to add dependencies but you can directly use Composition using interfaces for mapping Exports and Imports
  • Provides a way for building pluggable components which can be discovered at runtime and so need to recompilation
  • MEF allows tagging extensions with additonal metadata which facilitates rich querying and filtering

Where is MEF available :

It is available as part of .Net 4.0 as well as it is available in Codeplex.

This is just an introduction to MEF, basic terminologies used and how it is useful. I will come up with a follow up article which has some samples very soon.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s