tags:

views:

558

answers:

3

Hi,

I currently need to provide a means of adding extensibility in my application. I'm currently looking at MEF and MAF.

MEF provides a simpler programming model, and also fits our usage scenarios better as we only want to load addins into a single AppDomain - this is due to the way the system has been architected. The same thing can be achieved with MAF with few lines of code too.

However, I was wondering if MEF should be used in production systems, given it's preview status?

+5  A: 

MEF has been through several iterations, and I think it is pretty close to a stable API now (maybe with the exception of its Silverlight support). Remember that MEF will be part of .NET 4.0 and VS2010 is slated to use MEF for its extensibility model, so there is strong disincentive to change the API dramatically at this late stage.

FWIW, I haven't had any problems with the stability of MEF, and wouldn't see an issue using it in a production system. Just treat it with the same caution that you would any other open source component.

Mark Heath
A: 

I think that you should not need to worry about the new version or changes of MEF. MEF is a library assembly. In your production application, you can add MEF library to your project and always copy the assembly to your local deployment destination. In this way, you production application will stay with that version.

I have used many open source libraries. As long as you have the library files in the same folder where your application is deployed, you will be OK. It is better to get the source codes of the original open source projects or add them to your solution. It will help you if you need to debug into the library.

David.Chu.ca
+2  A: 

I am currently writing a "real" application based on MEF. My first step was to build a generic extensible application framework (with extensible menus, toolbars, status bar, dockable windows, etc.). We open sourced that as SoapBox Core. I also posted a demo explaining how it works.

I certainly think it's ready to use in real applications.

Scott Whitlock