I recommend listening to Herding Code podcasts with Glenn Block. ( Part 1 and Part 2 ). He goes into this topic in much more detail than we can answer here.
As the saying goes -
MEF and Unity are two things that have quite a few overlaps. Prism in its form by default uses Unity to inject dependencies. You can use Prism with MEF if you want, instead.
Prism is more designed to create composite applications. MEF, on the other hand, deals with extensibility. Of course, there are several matches in goals, but the main factor of movement is different.
- In the case of Prism, it's all about organizing well-known code.
- MEF, on the other hand, talks about opening up new code and the right injection.
The newest guide that I saw, with which I completely agree, was simply posted on the Glenn blog blog : "If you start Fresh you can use MEF for the modularity and general aspects of your composite application. Where possible, you can use a bit Prism. "
source share