Sunday, November 29, 2009
Getting started with Managed Extensibility Framework (MEF)
Recently I got a chance to work with WordPress and Drupal, those are the coolest PHP based blogging and content management systems out there, while I was impressed with the simplified installation and configuration, one thing that struck me was how simple it is to add plugins to the system. For instance I wanted a photogallery, so I downloaded the plug-in from WordPress.com, unzipped, dropped it in the plugins folder, went to the Administration panel and there it was, the plug-in sitting right there ready to activate.
Fortunately .NET now gets its own plug-in architecture framework in the form of Managed Extensibility Framework or MEF.
MEF makes it really easy to build extensible .NET applications with just a few lines of code.
In the application that needs to be extended you define a common interface that your plugins can implement.
Then you make a collection where all the plugins are stored and mark it with Import or ImportMany attribute.
Then all you need to do is write your plug-in that implements the above IRule interface that you defined in your extensible application and mark it with Export attribute.
With that only a few lines of code is required to load the plug-in into your extensible application.
While this simple example is great for exploring MEF and building plug-in that live in the same assembly, in the real world scenario your plugins will be built as part of a different solution or a project, do check out some of the resources below that demonstrate in detail how to leverage MEF in your applications.
MEF on CodePlex – contains assemblies, source code and sample applications, do checkout the Silverlight grid sample.
The code sample shown above is taken from here, uses the Preview 8 drop of MEF on Codeplex
MEF on MSDN – covers MEF in detail including the scenario to load multiple plugins and other details.